2013-07-23 9 views
6

CORSは、JSを介して接続できるSOAP Webサービス(HTTPSで動作し、ユーザー名/パスワード認証を使用)の新しいバージョンで動作させようとしています。HTTPSサービスにCORS + SOAP + WCFを使用する

現時点では、私はそれが局所的に(クロスドメインではなく)うまく動作していますが、すぐに別のドメインを使用しているので、WCF Traceviewerから次のようになります。 (IIS7で400不正な要求)

<ExceptionString>System.Xml.XmlException: The body of the message cannot be read because it is empty.</ExceptionString> 

それはそれも私のメッセージインスペクタが適切なCORSヘッダを追加するために実行し一部になっていないようです。

CORSをHTTPS SOAPサービスで使用する前にこれを経験したことがありますか?

私はあなたに与えることのできるアドバイスを感謝します。実はあなたはこれが唯一のこのよう要求ごとに応答カスタムヘッダーを実装

乾杯、 ジェイミー

+0

アイデアはありませんか? – Jamie

+1

あなたはこれを見直して試しましたか?[SO:IIS7のクロスオリジンリソース共有を有効にする](http://stackoverflow.com/questions/12458444/enabling-cross-origin-resource-sharing-on-iis7) –

+0

make content-orign-allow-methodsによってGET/POST以外のメソッドが明示的に許可されていることを確認してください。私はpropgetを使ってWebDAVを覚えていて、他のSOAPについてはわからない... – dandavis

答えて

1

を行うことができます。

Response.AppendHeader("Access-Control-Allow-Origin", "*"); 

これを行う方法はほかにもあります。あなただけが選択できます。 wcf記事でクロスドメインアクセスを有効にしていますか?クロスドメイン上でwcfサービスホストとwcfサービスホストからwcfサービスを使用したプロジェクトを実装しました。あなたはwebhttpバインディングでjsonpを使うことができます。答えの例はここにあります。

Cross Domain jQuery Ajax Request & WCF REST Service

か、このような構成を実装することができますenable-cors.orgサイトをチェックしてくださいCORSを有効にする/実装するための最良の方法について

<system.webServer> 
<httpProtocol> 
    <customHeaders> 
    <add name="Access-Control-Allow-Origin" value="*" /> 
    </customHeaders> 
</httpProtocol> 
</system.webServer> 

。私は簡単にそのリンクを見つけることができます。

http://enable-cors.org/server_wcf.html

少なくとも、あなたの代わりにJSONのJSONPを使用することができます。あなたは自由ですが、扱いにくいです。

私はあなたがそれを選んだのだろうかと思います。

+0

私はSOAPを既存のサービスとして使用しています。これがRESTまたはJSONの場合は、おそらくもっと簡単でしょう。私はすでにenable-corsサイトを見てきましたが、成功していないので、問題はセキュリティと関係していると思います。 – Jamie

+0

OK、myproxy.svc(javascriptファイルを実行するか、Corsを有効にしたサイトと同じサイト)のようなプロキシサービスを作成し、js corsenabledsite.com/myservice/requestToRealServiceまたはmyservice/requestToRealService経由で呼び出すことができますか? requestToRealServiceでは、サーバー上でサービスを呼び出すことができます。 –

関連する問題