2017-05-03 88 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服务,客户端提供了需要调用的服务。就这样。即使我自己也不了解创建服务的平台。如果有任何解决方法来获得服务响应将是很大的帮助。 –