[C#] .net WebSerivce(.asmx) corss domain 的 is not allowed by Access-Control-Allow-Origin. 問題
2013-06-18
使用AJAX 在呼叫WebService 的時候,在 Chrome 下面會出現
會出現
OPTIONS http://localhost:32350/TestService.asmx/GetAllUsers 200 (OK) jquery-1.9.1.min.js:5
XMLHttpRequest cannot load http://localhost:32350/TestService.asmx/GetAllUsers. Origin http://localhost:32537 is not allowed by Access-Control-Allow-Origin.
我測過Chrome 會出現這問題,至少還有錯誤訊息
Firefox之firebug 直接啥都沒出現,IE10 還會正常執行(真是厲害)
這要如何解決呢?!
在一般狀況下,通常在寫.ashx 來提供service provider 的時候只需要加上
Context.Response.AddHeader("Access-Control-Allow-Origin", "*");
Context.Response.ContentType = "application/json";
就可以解決,但是我在webservice 中的ctor 加入是無效的依然會出現
這時候需要再Web.Config 裡面加入這一段
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
</customHeaders>
</httpProtocol>
</system.webServer>
使得Web.Config 全文為
<?xml version="1.0"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
這樣就可以呼叫了
文章參考:
http://encosia.com/using-cors-to-access-asp-net-services-across-domains/
標籤:
.Net
,
ASP.net
,
C#
,
Javascript
,
WebService
-- Yesterday I wrote down the code. I bet I could be your hero. I am a mighty little programmer. 如果這篇文章有幫助到您,簡單留個言,或是幫我按個讚,讓我有寫下去的動力...