我正在尝试允许从任何地方访问。
我试过使用应用中间件:
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/