2014-11-24 17 views
-1

我想用ajax jQuery來調用API,它應該給我JSON響應我用下面的methosCORS沒有解決設定頭inspite,我不想使用JSONP

$.ajax({ 
     type:'GET', 
     url: 'http://example.com', 
     headers:{ 

      'Access-Control-Allow-Origin':'*', 
      'Access-Control-Allow-Headers':'X-Requested-With', 
      'Access-Control-Allow-Methods': 'POST, GET', 
     }, 

     //headers:{"Access-Control-Allow-Origin":"*"}, 
     dataType: "json", 



     success: function(msg) { 
     alert("data loaded"); 
     console.log(msg); 
     } 
}); 

但這仍然給我在控制檯上 跨來源請求以下警告阻止:同源策略不允許在http://example.com

讀取遠程資源,這讓我誤差 NetworkError:401未經授權

+0

頭部'Access-Control-Allow-Origin'是響應頭,它應該從不是來自你自己的ajax請求的'http:// example.com'的api來設置。 – 2014-11-24 10:27:29

+0

好的感謝澄清,我不能觸摸服務器端,所以請告訴我是否有一種方法,我可以從客戶端Ajax請求避免Cors? – user3767879 2014-11-24 10:44:56

+0

不,你不能避免來自客戶端ajax請求的Cors問題......你必須問你的Web應用程序中你正在使用的Web API的用戶,並告訴他們在請求到來時添加標題'Access-Control-Allow-Origin'來自你的域名.. – 2014-11-24 10:49:12

回答

3

Access-Control-Allow-*響應標題,而不是請求標題。它們必須由example.com設置,而不是您的JavaScript。

如果您可以授權您自己的代碼來閱讀其他人的網站,這將是一個非常毫無意義的授權系統。

0

訪問控制允許標題需要來自web服務器,而不是由客戶端發送。 您不能在通話中設置它們,您必須修改網絡服務器配置。 401表示您需要驗證,在這種情況下,原點需要與*不同。 Alsow您需要jQuery來發送身份驗證,並在服務器上添加Access-Control-Allow-Credentials:true標頭。 您還需要在客戶端啓用cors $ .support.cors = true;