axios 如何通过CORS传递Cookie?

aor9mmx1  于 2022-11-05  发布在  iOS
关注(0)|答案(2)|浏览(151)

我有一个使用Axios从客户端发送HTTP请求的项目

axios.create({
    baseURL: `http://localhost:8081/`,
    withCredentials: true
  })

我想这允许cookie--我确信在你请求之前它就显示在浏览器中了--与请求一起发送。
当日志中显示以下错误时,问题发生在后端:
对预检请求的响应未通过访问控制检查:当要求的证明数据模式为'include'时,回应中的'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();
});

但似乎都不起作用。

EDIT -以下是未来访问者的答案

在参与者评论的帮助下,我发现我必须设置原点值:

app.use(cors({
  origin : "http://localhost:8080",
  credentials: true,
}))
brccelvz

brccelvz1#

我知道现在对OP来说已经太晚了,但是对于那些不断来到这里的人来说--帮助我的是:

app.use(cors({
  preflightContinue: true,
  credentials: true,
}));

来源:https://expressjs.com/en/resources/middleware/cors.html

mtb9vblg

mtb9vblg2#

我遇到了这个问题,我通过将头文件"Access-Control-Allow-Origin"设置为我的前端的URL而不是“*”来修复它
更多详情:https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors/CORSNotSupportingCredentials

相关问题