2

ローカル マシンでいくつかの Web サービスをテスト中です。テスト ページはポート 80 のルートにあり、Web サービスは別のポートにあるため、Chrome の診断ツールから次のエラーが表示されます。

XMLHttpRequest cannot load http://PCNAME:8083/PackageSearch. Origin http://PCNAME is not allowed by Access-Control-Allow-Origin.

いくつかの検索を行った後、ServiceStack の CORS 機能に出会い、Web サービスに次の属性を設定しました。

[EnableCors(allowedMethods: "GET, POST")]

ただし、エラーは引き続き発生します。これは ajax 呼び出しです。

function packageSearch(tourCode) {
            var searchUrl = url + 'PackageSearch';
            var searchData = {
                TourCode: tourCode,
            };
            $.ajax(searchUrl,{
                    data : JSON.stringify(searchData),
                    type: 'POST',
                    contentType: 'application/json, charset=utf-8',
                    dataType: 'json',
                    success: function (result) {
                       oTable.fnClearTable();
                   }});
        };

はどこurlですかhttp://PCNAME/

編集

構成段階で次のように設定しました。

    public override void Configure(Funq.Container container)
    {
        Plugins.Add(new CorsFeature());

        RequestFilters.Add((httpReq, httpRes, requestDto) =>
            {
                if (httpReq.HttpMethod == "OPTIONS")
                    httpRes.End();
            });
        base.SetConfig(new EndpointHostConfig
        {
            DefaultContentType = "application/json",
            GlobalResponseHeaders = {
            { "Access-Control-Allow-Origin", "*" },
            { "Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS" },
            { "Access-Control-Allow-Headers", "Content-Type, origin, accept" },
        }
        });
        });
    }   // Configure
4

2 に答える 2