2015-08-26 122 views
0

希望有人可以指引我正確的方向,我已經尋找了幾天,但仍然沒有。我想打電話給不同的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是一種讚賞感謝

+0

是的,這是一個CORS問題,你可以通過使用JSONP來解決它。通過直接調用API,你不會得到一個CORS問題,因爲你不跨域調用它,也就是說,你的網站'x.com'試圖調用'p.com',跨站點....只要把在'p.com'中放入瀏覽器使其成爲直接調用。 – ppumkin

+0

@ppumkin我試過jsonp,但我對jsonp的回調方面感到困惑。它從來沒有運行回調函數,它只是告訴我意想不到的符號**:**,謝謝我會更加註意它 – code

+1

是的JSONP是一個有點痛苦。使用'fiddler'來查看響應中返回的數據。我懷疑你的JS語法不正確。在解析爲JSON或其他內容之前,您可能忘記將響應放在''string''引號中。這是意外符號錯誤的常見問題。或者,也許你不需要解析響應,因爲它已經是JSON對象,你可以將它分配給一個內部變量。 – ppumkin

回答