CORS策略已阻止从原始URL访问URL的XMLHttpRequest

时间:2019-09-02 12:41:22

标签: node.js angular express cors

我正在为前端处理CORS。在我的本地主机(开发环境)上,给定的cors可以正常工作。但是当我将应用程序部署到heroku时,它给出了给定的错误。

Access to XMLHttpRequest at 'myHerokuURL' from origin 'http://localhost:4200' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: Redirect is not allowed for a preflight request.

这是我正在使用的CORS。

app.use(function (req, res, next) {
    res.setHeader('Access-Control-Allow-Origin', '*');
    res.setHeader('Access-Control-Allow-Methods', '*');
    res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With, Authorization, x-auth-token, content-type');
    res.setHeader('Access-Control-Allow-Credentials', false);
    next();
  }); 

2 个答案:

答案 0 :(得分:0)

您需要添加如下所示的cors,

const cors = require('cors');
app.use(cors());

答案 1 :(得分:0)

在主 app.js 文件中设置路由之前,您需要先设置芯线。

npm i --save cors

您还可以根据环境模式(例如开发生产)将cors设置为自动更改

以下是我通常如何设置cors的示例:

var corsUrl;

if (process.env.NODE_ENV === 'development') {
  corsUrl = process.env.LOCAL_URL  // http://localhost:8080
} else if (process.env.NODE_ENV === 'production') {
  corsUrl = process.env.DEPLOY_URL // http://myapp.com
}

app.use(cors({
  origin: corsUrl
}))

注意::使用http s ://myapp.com-如果要在服务器上强制使用安全协议。

然后设置路线

app.use('/', indexRoutes)
admin.use('/', adminRoutes)

Cors文档-https://www.npmjs.com/package/cors 希望这会有所帮助。