2016-11-27 29 views
0

我有CORS一個錯誤:CORS「否」Access-Control-Allow-Origin'標題出現在請求的資源上。「

「的XMLHttpRequest不能加載http://graphql-swapi.parseapp.com/響應預檢請求未通過訪問控制檢查:否‘訪問控制允許來源’標題存在於所請求的資源。原因'http://localhost:3000'因此不允許訪問。響應具有HTTP狀態碼405。「

當我調用服務方法時出錯。

代碼段:

let headers = new Headers(); 
headers.append('Access-Control-Allow-Origin', '*'); 
headers.append('Content-Type', 'application/json'); 
headers.append('Accept', 'application/json'); 
headers.append('Access-Control-Allow-Methods', 'POST'); 
headers.append('Access-Control-Allow-Headers', 'Content-Type'); 

//console.log(headers); 

return this._http.post(apiUrl, { query: query, vars: '{}' }, { headers: headers }) 
    .map(res => res.json().data.planets); 

當我關閉瀏覽器CORS,我得到:

的XMLHttpRequest無法加載XXX。預檢的響應具有無效的HTTP狀態碼405錯誤。

查詢和代碼肯定是正確的。

+0

[「No'Access-Control-Allow-Origin'標頭存在於請求的資源中」](http://stackoverflow.com/questions/20035101/no-access-control-allow-origin-頭部是在請求的資源) – georgeawg

回答

0

響應有HTTP狀態代碼405

Look that up

405不允許的方法


響應預檢要求

Look that up

「預檢」請求首先由OPTIONS方法發送一個HTTP請求到資源的其他域,以確定實際的請求是否是安全發送


您的服務器端代碼可能設置爲將CORS頭添加到對POST請求的響應中,但您尚未設置它來處理OPTIONS請求。

+0

我該如何解決它?我必須更改服務器代碼或只是在應用程序代碼中的東西? –

+0

您必須更改服務器代碼,以便它可以處理選項請求。 – Quentin

+0

您還應該更改客戶端代碼,以避免將CORS **響應**標頭設置爲**請求**標頭。您的代碼無法授予其訪問其他網站的權限,這會使限制毫無意義。 – Quentin

相關問題