node.js - 如何在 express 中正确管理 CORS 策略?

标签 node.js express 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", "*");
  next();
});

我试过在 route 使用它:

app.post('/login',function(req,res){
var login   = req.body;
var sess    = req.session;

if (!login.email && !login.pwd){    
    return res.status(401);
}
res.header("Access-Control-Allow-Origin", '*');
res.header("Access-Control-Allow-Headers", '*');
.... more code here

两者都不行。我不断收到错误消息:“对预检请求的响应未通过访问控制检查:请求的资源上不存在‘Access-Control-Allow-Origin’ header 。”

在服务器的更下方,我们对另一条路由使用了类似的代码,该路由有效:

app.post('/questar',function(req,res){
//allow xhr post from retireup domains
var cors = {
    origin: "https://www.website.com";
};
res.header("Access-Control-Allow-Origin", cors.origin);
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
res.type('application/json');

我无法分辨代码之间的区别,但只有一组有效。任何想法为什么?这似乎是一个不应该这么复杂的问题。谢谢

最佳答案

应用“cors”中间件后。您应该在“localhost:”之前传递“http://”。在由 Axios 发送到的 url 中,如下所示:

axios.get("http://localhost:8080/api/getData")
.then(function (response) {
this.items= response.data;
}).catch(function (error) {
console.log(error)
});

关于node.js - 如何在 express 中正确管理 CORS 策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34644622/

相关文章:

node.js - Sublime Text 3 和 sublime-grunt-build

JavaScript MySql 通过 URL 进行多行 INSERT 语句

node.js - nodeJS (express,connect) - 在当前流中动态添加中间件

asp.net-mvc - 处理对 ASP.NET MVC 操作的 CORS 预检请求

java - Spring Boot 2.4.0 版本中 CORS 策略的更改

c# - 启用 CORS 在全局范围内不起作用

java - 由于未找到 Node 命令,Git 钩子(Hook)预提交中的提交失败

node.js - Node JS 异步/等待

node.js - 错误: timeout of 2000ms exceeded. 确保在此测试中调用done()回调

javascript - Express:内部服务器错误导致服务器停止