首页 文章

Angular2,REST服务POST调用错误:“跨源请求被阻止”

提问于
浏览
1

我试图使用Angular 2(版本4.0.0)从开发环境(localhost:4200)调用REST API

得到以下错误消息:“跨源请求被阻止:同源策略禁止在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);
});

有人可以帮我找到解决这个问题的方法吗?

4 回答

  • 0

    CORS必须由后端启用 . 根据后端框架,通常您必须发送后端可识别的特定标头 . 但是,在明确启用后端的CORS支持之前,发送标头是没用的

  • 1

    在我的一个项目我刚刚去了我的服务器(linux 16.04上的apache2),我刚刚在虚拟服务器配置文件中添加了“Header set Access-Control-Allow-Origin”*“”

  • 1

    根据浏览器策略,不允许使用CORS . 如果您使用的是 POSTMAN ,则不会发生此错误 .

    CORS错误只应由服务器端删除 . 因此,您应该在后端代码中设置标头 .

    如果您使用 express 作为后端......

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

    你在本地服务器 . 您需要在同一台服务器上运行api和angular app . 当您在同一个 生产环境 服务器上上传项目时,我希望不会显示此错误 .

相关问题