0

httpを介してjavascriptを使用してWCFサービスクロスドメインを呼び出そうとしています。

次のように、呼び出したい操作にAccess-Control-Allow-Originヘッダーを追加しました。

WebOperationContext.Current.OutgoingResponse.Headers.Add("Access-Control-Allow-Origin", "*");

ただし、jquery.ajaxを使用して投稿すると、次のようになります。

Origin http://server/ is not allowed by Access-Control-Allow-Origin.

さらに悪いことに、それは私のローカルマシンからも発生します。

XMLHttpRequest cannot load http://localhost:8201/wcfservice. Origin http://localhost/ is not allowed by Access-Control-Allow-Origin. (observed in Chrome)

私は根本的に間違ったことをしていますか?

4

1 に答える 1

1

GETリクエスト(CORS対応ブラウザの場合)では問題ありません-リクエストはサービスに送信され、サービスにAccess-Control-Allow-Originヘッダーがある場合、ブラウザはそれをアプリケーションに戻します) 。

「安全でない」リクエスト(つまり、POST、PUT、DELETEなど、サービスに副作用を引き起こす可能性のあるリクエスト)の場合、ブラウザは最初にプリフライトリクエストを送信します。これは、サービスが受け入れることができるかどうかをサービスに「尋ねる」OPTIONSリクエストです。クロスドメインリクエスト。操作はPOSTリクエストにのみ応答するため、そのリクエストには応答せず、ブラウザはそれをブロックします。

WCFでCORSサポートを実装する1つの方法について投稿しました。これは、http://blogs.msdn.com/b/carlosfigueira/archive/2012/05/15/implementing-cors-support-in-wcfにあります。 .aspx。基本的に、「通常の」リクエストに加えて、OPTIONSリクエストも処理する必要があります。

于 2012-06-19T00:28:58.713 に答える