希望有人可以指引我正確的方向,我已經尋找了幾天,但仍然沒有。我想打電話給不同的API只是返回數據玩,但每次我調用API,我得到了同樣的錯誤:訪問公共Web API
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'Your Site' is therefore not allowed access. The response had HTTP status code 404
我知道我的電話會通過,因爲一個特定的API它跟蹤我的使用和說我已經做了大約5次成功的調用,所以這意味着數據正在返回,但我的瀏覽器正在阻止它。這隻發生在公共API上。我通過Azure創建了自己的API,設置CORS,稱爲API,它工作得很好。但是,由於我無法訪問公共服務器來設置和啓用CORS,因此我無法知道他們是如何設置的。
這裏是我的代碼來調用API:
MyAngularApp.service('APIService', function ($http) {
return {
getWork: function() {
return $.ajax({
url: "http://api.nfldata.apiphany.com/nfl/v2/JSON/Teams/2014",
beforeSend: function (xhrObj) {
// Request headers
xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key", "*******");
},
type: "GET",
})
.done(function (data) {
alert("success");
})
.fail(function() {
alert("error");
});
}
}
});
任何幫助使用JSONP是一種讚賞感謝
是的,這是一個CORS問題,你可以通過使用JSONP來解決它。通過直接調用API,你不會得到一個CORS問題,因爲你不跨域調用它,也就是說,你的網站'x.com'試圖調用'p.com',跨站點....只要把在'p.com'中放入瀏覽器使其成爲直接調用。 – ppumkin
@ppumkin我試過jsonp,但我對jsonp的回調方面感到困惑。它從來沒有運行回調函數,它只是告訴我意想不到的符號**:**,謝謝我會更加註意它 – code
是的JSONP是一個有點痛苦。使用'fiddler'來查看響應中返回的數據。我懷疑你的JS語法不正確。在解析爲JSON或其他內容之前,您可能忘記將響應放在''string''引號中。這是意外符號錯誤的常見問題。或者,也許你不需要解析響應,因爲它已經是JSON對象,你可以將它分配給一個內部變量。 – ppumkin