2017-05-03 87 views
1

我試圖從開發環境(本地主機:4200)調用REST API的使用提示以下錯誤:角2(4.0.0版本)Angular2,REST服務POST調用錯誤:「跨來源請求阻止」

消息: 「跨源請求被阻止:同源策略不允許在https://localhost:8000/auth處讀取遠程資源(原因:缺少CORS頭'Access-Control-Allow-Origin')。」

我在這裏提供一個參考代碼示例:

var headers = new Headers(); 
headers.append('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8'); 

return this.http.post(this.loginUrl, 'POST_Parameters', { 
     headers: headers 
}).map(res => { 
     console.log(res); 
}); 

可有人請幫我找出這個問題的解決方案?

+2

的可能的複製[如何創建跨域請求(角2)?(http://stackoverflow.com/questions/34790051/how-to-create-cross-domain-request-angular-2) – Alex

回答

1

CORS必須由後端啓用。根據後端框架,通常您必須發送後端可識別的特定標頭。但直到你明確地啓用後端的CORS支持,發送標頭是無用的

1

對我的一個項目我剛剛到我的服務器(Linux 16.04上的apache2),我只是添加了「Header set Access-Control-Allow-Origin虛擬服務器配置文件上的「*」「

0

根據瀏覽器策略CORS是不允許的。如果您使用POSTMAN那麼這個錯誤不會發生。

CORS錯誤應該只能在服務器端刪除。因此你應該在你的後端代碼中設置頭文件。

如果您正在使用表達作爲後端...

app.use(function(req,res){ 
    res.header('Access-Control-Allow-Origin', '*');}); 
+0

感謝您的所有優秀回覆。 –

+0

但是按照這裏的情況,我無法控制REST服務,客戶端提供了需要調用的服務。就這樣。即使我自己也不瞭解創建服務的平臺。如果有任何解決方法來獲得服務響應將是很大的幫助。 –