ローカル マシンでいくつかの 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