我有一个项目,可以使用Axios从客户端发送HTTP请求
axios.create({
baseURL: `http://localhost:8081/`,
withCredentials: true
})
我想这允许cookie-我确信它会在请求之前显示在浏览器中-与请求一起发送。
该错误出现在日志中时,该问题发生在后端:
对预检请求的响应未通过访问控制检查: 响应中“ Access-Control-Allow-Origin”标头的值必须 当请求的凭据模式为时,不是通配符“ *” '包括'。因此,不允许原点“ http://localhost:8080” 访问。发起的请求的凭据模式 XMLHttpRequest由withCredentials属性控制。
我尝试过:
app.use(cors({
//origin : to be set later
credentials: true,
}))
这是相反的:
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
res.header("Access-Control-Allow-Credentials", true);
next();
});
但似乎都不起作用。
任何帮助将不胜感激。
编辑1: 我正在使用cookie解析器,我很确定它将cookie附加到要求中。
我的app.js文件没有其他可能导致此类问题的中间件,除了CORS和Cookie解析器。
编辑2:应要求,我调用了此命令:
curl -v -X选项http://localhost:8081
这就是结果:
Rebuilt URL to: http://localhost:8081/
* Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 8081 (#0)
> OPTIONS / HTTP/1.1
> Host: localhost:8081
> User-Agent: curl/7.47.0
> Accept: */*
> < HTTP/1.1 204 No Content < X-Powered-By: Express < Access-Control-Allow-Origin: * < Access-Control-Allow-Methods: GET,HEAD,PUT,PATCH,POST,DELETE < Vary: Access-Control-Request-Headers < Content-Length: 0 < Date: Sun, 02 Sep 2018 23:31:11 GMT < Connection: keep-alive
答案 0 :(得分:0)
我知道对OP来说为时已晚,但对于那些一直来这里的人-帮助我的是:
app.use(cors({
preflightContinue: true,
credentials: true,
}));
答案 1 :(得分:0)
我遇到了这个问题,我通过将标头 "Access-Control-Allow-Origin"
设置为我的前端的 URL 而不是“*”来解决它
更多详情:https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors/CORSNotSupportingCredentials