Windowsサービス内でホストされているWCF RESTサービスがあり、すべての応答にAccess Control-Allow-Origin HTTPヘッダー(CORSの一部として定義)を送信したいと考えています。WCF RESTサービス内のCORSサポート
マイ未遂ソリューションはIDispatchMessageInspector実装内で、次のようなものを持っていることでした。
public void BeforeSendReply(ref Message reply, object correlationState)
{
var httpResponse = reply.Properties["httpResponse"] as HttpResponseMessageProperty;
if (httpResponse != null)
{
// test of CORS
httpResponse.Headers["Access-Control-Allow-Origin"] = "*";
}
}
通常、これは動作しますが、残念ながら私のサービスは、要求が許可なしで来るときことを意味し、HTTP basic authorizationを使用していますWCFは資格情報を要求する401応答を自動的に送信します。残念ながら、この最初の交換ではWCFはIDispatchMessageInspectorを呼び出さないため、Access-Control-Allow-Originヘッダーは最初の交換に追加されません。
この問題は、ブラウザからサービスを呼び出そうとしたときに発生します。 CORSでは、発信元ドメインがAccess-Control-Allow-Origin応答ヘッダー(*がすべてのドメインに一致)にリストされているドメインと一致する場合にのみ、クロスオリジン要求を許可するように指定しています。残念なことに、ブラウザがAccess-Control-Allow-Originヘッダーのない最初の401応答を見ると、アクセスが妨げられます(same origin policyによる)。
WCFによって自動的に送信される最初の401応答にヘッダーを追加する方法はありますか?
これでどこにいらっしゃいましたか? –