2016-04-08 2 views
0

私はローカルWebページから書いたWCFサービスを呼び出そうとしていますが、クロスオリジンエラーは左右に出ていますが、 JavaScriptからの呼び出しを試してください。CORSヘッダ 'Access-Control-Allow-Originが見つかりません。

私はこの問題を解決するために何ヶ月もオンとオフを試みました。私は知恵の終わりにいる。 web.configを数時間、サイトのIISレスポンスヘッダー、無数のブログ、その他のSOの投稿、enable-cors.orgに取り組んできましたが、まだ私はレンガの壁にぶつかっています。

WCFサービスを呼び出しているJSコード:

var url = "http://(foo)/WCF.svc/Bar" 
var xhr = new XMLHttpRequest(); 
xhr.open('GET', url, false); 
xhr.onload = function() { 
    console.log(xhr.responseText); 
} 
xhr.send(); 

WCFサービスのためのC#関数:

[OperationContract, WebInvoke(UriTemplate = "/Bar/", Method = "GET")] 
public string Bar() { return "Success!"; } 

WCFサービスのWeb.configの関連セグメント:

<system.webServer> 
    <httpProtocol> 
     <customHeaders> 
      <add name="Access-Control-Allow-Origin" value="*" /> 
      <add name="Access-Control-Allow-Headers" value="*" /> 
      <add name="Access-Control-Allow-Methods" value="*" /> 
      <add name="Access-Control-Max-Age" value="1728000" /> 
     </customHeaders> 
    </httpProtocol> 
</system.webServer> 

前述のとおり、他の言語のHTTPリクエストは問題ありません。 C#とActionScript 3は同じWCF呼び出しで正常に動作しますが、JSではこれらのエラーを回避できません。

何が起こっているのでしょうか?

答えて

0

問題は、次の2行

 <add name="Access-Control-Allow-Headers" value="*" /> 
     <add name="Access-Control-Allow-Methods" value="*" /> 

*は、これら2つのヘッダ

スペック私は「POSTは、GETする方法を設定したhere

+0

を読むための有効な値ではありませんですOPTIONS "とヘッダを" Content-Type "に設定していますが、それでも問題は解決しません。これも正しいのでしょうか? – wmaynard

関連する問題