初めてのWCFサービスを作成しました。他のクライアントと共有したいと思います。私はAccess-Control-Allow-Origin
ヘッダーをIIS、Web.config、およびGlobal.asaxに追加しましたが、リモートクライアントは引き続きこのサービスにアクセスできません。私はChromeとIE(私たちの組織のサポートされているブラウザ)でテストしました。私のエラーは "プリフライト要求への応答はアクセス制御チェックを通過しません:いいえ 'Access-Control-Allow-Origin'ヘッダーが要求されたリソースに存在します。 Web.configファイルでAccess Control-Allow-OriginはIISにありますが、動作しません。
:Global.asaxの中
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type"/>
<add name="Access-Control-Allow-Methods" value="POST,GET,OPTIONS"/>
</customHeaders>
</httpProtocol>
:
protected void Application_BeginRequest(object sender, EventArgs e)
{
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
{
//These headers are handling the "pre-flight" OPTIONS call sent by the browser
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept");
HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000");
HttpContext.Current.Response.End();
}
}
JavaScriptがアクセスしようとしていますサービス。
$.ajax({
type: "POST",
url: "http://localhost/wsSamwise/Service1.svc/GetTime",
data: '{"UserName": "' + userName + '"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data) {
$("#results").html(data.GetTimeResult);
console.log(data);
}
});
これらのアイデアのすべては、様々なstackoverflowのスレッドから来たが、それらのどれも私のために働いていません:それはローカルではなくリモートで動作します。私は何を逃したのですか?
EDIT:ローカルホストとリモートブラウザの応答のヘッダーをチェックアウトしました。自分のlocalhostの応答にはAccess-Control-Allow-Origin
ヘッダーが表示されますが、リモートブラウザーの応答には表示されません。それは送られていないようです。
私はlocalhostからの応答ヘッダー:
Access-Control-Allow-Headers:Content-Type
Access-Control-Allow-Methods:POST,GET,OPTIONS
Access-Control-Allow-Origin:*
Access-Control-Allow-Origin:*
Cache-Control:private
Content-Length:82
Content-Type:application/json; charset=utf-8
Date:Thu, 05 May 2016 16:01:28 GMT
Server:Microsoft-IIS/7.5
X-AspNet-Version:4.0.30319
X-Powered-By:ASP.NET
リモートブラウザからの応答:
Allow:OPTIONS, TRACE, GET, HEAD, POST
Content-Length:0
Date:Thu, 05 May 2016 16:00:09 GMT
Public:OPTIONS, TRACE, GET, HEAD, POST
Server:Microsoft-IIS/7.5
X-Powered-By:ASP.NET
EDIT 2:Guysは、多分それは完全にIISの問題です。私はちょうどIISにカスタムヘッダーを追加しました。ローカルホストブラウザに表示されますが、クライアント上には表示されません。リモートブラウザからBody-Count
ヘッダーが欠落していますが、ローカルブラウザで表示されます。
どのように具体的には機能しませんか?それはタイムアウトですか?エラーメッセージを出しますか?空の応答ですか? – Brian
含まれるエラーに編集されました。 – mrcoulson
[このリンク](http://www.productiverage.com/wcf-cors-plus-json-rest-complete-example)にチェックしましたか? –