首页  >  文章  >  后端开发  >  为什么我的浏览器不设置来自跨源响应的 Cookie?

为什么我的浏览器不设置来自跨源响应的 Cookie?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-17 07:08:03158浏览

Why Isn't My Browser Setting Cookies from Cross-Origin Responses?

浏览器拒绝接受来自跨源响应的 Set-Cookie 标头

问题:

应用程序很难设置和保留从后端发送到前端的 HTTP cookie

具体:

  • 后端正确发送响应头中的cookie。
  • 前端使用axios发送请求,但 cookie 未在本地设置。
  • API 路由器具有必要的标头和 CORS 设置允许cookie。

解决方案:

错误在于axios请求配置中withCredentials的放置。 withCredentials 是请求的属性,而不是请求标头。要解决此问题,应将其从 headers 对象移至顶级配置对象。

更正的代码:

const axiosAuth = axios.create({
  validateStatus: (status: number) => {
    return status >= 200 && status < 300;
  },
  headers: {
    Accept: `application/json`,
    'Content-Type': 'application/json',
  },
  withCredentials: true,
});

通过使用 withCredentials: true在配置对象中,Axios 会自动处理跨域 cookie 的设置和检索。

以上是为什么我的浏览器不设置来自跨源响应的 Cookie?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn