2013-10-17 138 views
3

我正在使用一些第三方web api,並且當我通過ajax調用該web api時在我的應用程序中,總是出現錯誤而不是成功。雖然在控制檯檢查我有「的XMLHTTPRequest無法加載的http:// ...產地HTTP //本地主機:端口/不通過訪問控制允許來源允許的」錯誤XMLHTTPRequest無法加載http:// ...原始http:// localhost:端口不被允許通過訪問控制 - 允許來源

  $.ajax({ 
       url: "SomeURL", 
       type:"GET", 
       dataType: 'jsonp', 
       crossDomain: true, 
       success: function (data) { 
        alert("Success"); 
       }, 
       error: function (data, Errtext) { 
        alert("some error occured"); 
       } 
      }); 

當我訪問該網址直接在瀏覽器中我收到的數據以XML格式

我也refered類似的問題 How to resolve uncaught syntax error in jsonp ,但沒有得到解決提前

感謝

回答

1

你能看到respo因爲只有跨域ajax請求受限於same origin policy

爲了克服同源策略的限制,您應該使用jsonp或跨源資源共享(CORS)。

JSONP: What is JSONP all about?

請注意,使用JSONP,您呼叫應該支持JSONP的第三方網站的API。

CORS: 跨源資源共享標準的工作方式是添加新的HTTP標頭,允許服務器描述允許使用Web瀏覽器讀取該信息的原始集合。此外,對於可能導致用戶數據產生副作用的HTTP請求方法(特別是對於GET以外的HTTP方法,或對於某些MIME類型的POST方式),規範要求瀏覽器「預檢」請求,請求支持的方法從服務器使用HTTPOPTIONS請求方法,然後在從服務器獲得「批准」時,使用實際的HTTP請求方法發送實際請求。服務器還可以通知客戶端「憑證」(包括Cookie和HTTP認證數據)是否應該隨請求一起發送。

https://developer.mozilla.org/en/docs/HTTP/Access_control_CORS

爲了使在一個asp.net應用CORS:

<system.webServer> 
<httpProtocol> 
    <customHeaders> 
    <add name="Access-Control-Allow-Origin" value="*" /> 
    <add name="Access-Control-Allow-Headers" value="Content-Type" /> 
    </customHeaders> 
</httpProtocol> 
</system.webServer> 
相關問題