2015-11-19 51 views
0

首先我知道很多問題都被問到了這個問題,但我真的試圖找出問題所在,但沒有什麼幫助我。 我正在使用C#,ASP.NET,Javascript,AJAX並嘗試使用API​​來獲取一些信息,但每次都會出現此錯誤。當我嘗試使用不同的API時,完美無缺。 API狀態處於活動狀態,但響應每次都失敗。沒有'Access-Control-Allow-Origin'標題出現在請求的資源上

誤差看起來像: 1

我添加的權限配置文件:

<customHeaders> 
    <add name="Access-Control-Allow-Origin" value="*" /> 
    <add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" /> 
    <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" /> 
    </customHeaders> 

但這並沒有幫助我。我現在應該怎麼做?我試了幾個小時,結果也一樣。

嘗試在ajax調用中添加jsonp和crossDomain,但這對我也沒有幫助。

$.ajax({ 
     headers: { 
      'Accept': 'application/json', 
      'Content-Type': 'application/json' 
     }, 

     crossDomain : true, 
     dataType: 'jsonp', 
     url: url + id, 
     type: 'GET', 
     contentType: 'application/json;', 
     success: function (valid) { 
      if (valid) { 
      } else { 
      } 
     } 
    }); 
} 

謝謝大家的每一個答案。

問候

+0

CORS設置和響應類型取決於API - 如果它不支持第三種第三方請求或JSONP沒有什麼可以做的。 –

+0

但是當我打開錯誤的鏈接,我得到這樣的東西:http://imgur.com/IbGASq1,所以我認爲這種反應很好..: -/ – Katz

+0

這是由於[同源策略](http: //en.wikipedia.org/wiki/Same-origin_policy)。該請求將被髮送,並且瀏覽器將接收到數據,但因爲域不匹配,數據將被阻止通過JavaScript進行訪問。這就是爲什麼你可以看到響應數據。就像我所說的那樣,你無法在客戶端上改變這種行爲。如果您需要獲取數據,最好使用本地服務器端代理爲您提出請求,然後將數據從那裏返回給您自己的JS。 –

回答

0

如果您使用的ASP.NET Web API時,嘗試在您的HTTP配置使CORS。

 public static void Register(HttpConfiguration config) 
    {    
     config.EnableCors(); 
     config.MapHttpAttributeRoutes() ....... 

我做成功,像這樣這樣的API的Ajax調用..

  $.ajax({ 
      url: url, 
      type: 'POST', 
      dataType: 'json', 
      contentType: 'application/json; charset=utf-8', 
+0

試過......什麼都沒有。但是,謝謝! – Katz

相關問題