2015-12-09 60 views
1

這就是我想要做的事:CORS問題沒有「訪問控制允許起源頭」存在於所請求的資源

function fetch() { 
       $http.get("http://www.myapifilms.com/imdb/top") 
       .success(function(response) { 
        console.log(response); 
        $scope.details = response; 
       }); 
      }; 

我收到的錯誤是:

XMLHttpRequest無法加載http://www.myapifilms.com/imdb/top。請求的資源上沒有「Access-Control-Allow-Origin」標題。因此'Origin'http://localhost:3000'不允許訪問。

我已經在這個問題或CORS上查​​找了一下,但仍似乎無法意識到我必須添加和在哪些文件(S)。

+0

使用JSONP在這種情況下。 – dfsq

+0

我已經試過如下:'函數取(){ \t \t $ http.jsonp( 「http://www.myapifilms.com/imdb/top」) \t \t .success(功能(響應){ \t \t $ scope.details =響應; \t \t的console.log(響應); \t \t的console.log(細節); \t \t}); \t \t};' 但似乎無法獲得控制檯日誌去和細節沒有得到填補? – Tempuslight

回答

2

這意味着http://www.myapifilms.com不允許「localhost」來源訪問其數據。

我可以推薦兩種解決方案

- >嘗試使用HTTP服務器通過NPM運行安裝-g HTTP服務器

- >下載一個插件,鉻(不推薦),但可以很方便的測試https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?utm_source=chrome-app-launcher-info-dialog

+0

我打算在heroku上託管應用程序,並且還在heroku上託管數據庫,如果我可以使用keystoneJS。它會接受這些網址嗎?另外,如何使用http-server測試它?然後我在代碼中添加什麼? – Tempuslight

+0

在heroku上託管您的應用可能會工作,因爲它會爲您提供一個URL。在後面的apifilms人們寫了一條說,允許任何來自「網站URL」的連接,但沒有任何來源..它出於安全的目的,我猜。 HTTP服務器再次取決於他們的權限..爲測試只是下載鉻插件,你會很好去 –

+0

我已經與$ http.jsonp()工作,但我似乎無法得到它的工作。 ..如果你有興趣:http://stackoverflow.com/questions/34191130/http-jsonp-doesnt-load-in-data?noredirect=1#comment56130963_34191130。 – Tempuslight

0

對於此請求成功,myapifilms.com的響應將需要正確的標頭集。你應該應該做的是通過你自己的服務器路由你的請求。但是,您可以通過以下方式進行測試:browser extension

Explained in detail here

+0

Mhm是的,這可能是因爲它不允許本地主機連接,將託管我的應用程序在heroku使它的工作,因爲它不會再是本地主機。 – Tempuslight

0

使用這個插件: https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=en

//make headers for service 
let headers = new Headers(); 
headers.append('Content-Type', 'application/json'); 
headers.append('appCurrentVersionNumber', AppConstant.APP_VERSION); 
headers.append('WebServiceIdentifier', AppStorage.getItem('webserviceidentifier')); 
this.headers = {headers}; this.http.post(API_URL + 'checkInVan', JSON.stringify(userData), this.headers).map(res => res.json()); 
相關問題