当前位置: 首页 > 知识库问答 >
问题:

前端 - 浏览器跨域请求带不上 cookie(已经设置了携带 cookie),是为什么?

公孙慎之
2024-12-09

从站点 a 请求 b 域名的接口,带不上 cookie,前后端均已经设置了携带 cookie

  • 前端(axios 设置 withCredentials
  • 后端(设置 Access-Control-Allow-Credentials

但是从 c 站点,或者本地 localhost 发起请求却可以带上 cookie

求指导是遗漏了哪里的配置

共有5个答案

申屠项明
2024-12-09

如果要做ngnix代理, 千万记得不要开启前端的{ withCredentials: true }, 删除它, 只配置服务器的ngnix即可!!! 前端配置这个withCredentials会导致永远不成功!

冀啸
2024-12-09

我写个配置,给你参考一下

1.前端设置:

  • 在前端请求中设置了 withCredentials: true。例如,如果使用的是 Axios,可以这样设置:
axios.get('https://example.com/api', { withCredentials: true });

2.后端设置

  • 后端响应头
    Access-Control-Allow-Credentials: true
  • Access-Control-Allow-Origin 设置为特定的域名,而不是通配符 *。
Access-Control-Allow-Origin: https://your-frontend-domain.com

3.SameSite 属性:

SameSite 属性应设置为 None,并且需要同时设置 Secure 属性。例如:

Set-Cookie: CookieName=CookieValue; SameSite=None; Secure;
夹谷信鸿
2024-12-09

如果你用的是nginx,可以这么做:

location / {
    ...
    # 确保转发 Cookie
    proxy_set_header Cookie $http_cookie;
}
蒋茂材
2024-12-09

后端需要增加 Access-Control-Allow-Origin: a 响应头。* 不行。

罗华翰
2024-12-09

好像缺一步后端设置 Access-Control-Allow-Origin 为特定的域名

 类似资料:
  • 问题内容: 我正在使用$ .ajax发出ajax请求。响应具有标题集(我已经在Chrome开发工具中对此进行了验证)。但是,浏览器在收到响应后 不会 设置cookie!当我导航到域中的另一个页面时,不会发送cookie。(注意:我没有执行任何跨域ajax请求;该请求与文档位于同一域中。) 我想念什么? 编辑 :这是我的ajax请求的代码: 这是请求,如Chrome开发者工具所示: 响应: 问题答案

  • 问题内容: 尝试实施ajax登录/注册过程(不带身份验证的刷新站点)。使用Cookie来保存状态。我以为我现在就拥有此功能,但是由于某种原因,浏览器在从服务器取回cookie后仍未设置cookie。有人可以帮忙吗?这是请求和响应头: 请求标题 响应标题 我还在服务器返回的Chrome网络工具中看到了cookie: 响应Cookie 问题答案: 必须通过将“ withCredentials”设置设置

  • vue项目中嵌了一个iframe,iframe中需要登录,login请求必须携带cookie,请问应该怎么写才能正确携带呢 想要iframe中的login请求能正确携带cookie

  • vue 3.0 +axios 跨域情况下无法携带cookie cooKie 是本地写入缓存的 axios已设置withCredentials=true; 后端也加了 发起请求时 查看请求头还是没有set-cookie

  • 问题内容: 我必须从域B.com调用域A.com(使用http设置cookie)。我在B.com域上所做的就是(javascript): 这将在我测试过的所有浏览器(Safari除外)上在A.com上设置Cookie。令人惊讶的是,即使没有P3P标头,它也可以在IE6中使用。 有什么办法可以使它在Safari中工作吗? 问题答案: 来自: Safari附带了一种保守的cookie策略,该策略将co

  • 问题内容: 我有一个小问题。 如何为多个域设置Cookie? 我确实了解安全性问题,并且我确信以前已经做过。原因是SSO。 即。 将需要将登录域设置为: domain.com,domain1.com,domain2.com。 有没有简单的方法,可以使用PHP和Cookies或其他替代方法? 问题答案: domain.com绝对没有办法为domain1.com设置cookie。您试图做的事情只能通过

  • 如何分享Cookie交叉起源?更具体地说,如何将头与头结合使用? 下面是对我的情况的解释: 我正在尝试为运行在上的web应用程序中的上的API设置cookie。 似乎我在浏览器中收到了正确的响应头,但不幸的是它们没有效果。这些是响应头: 此外,当我使用Chrome开发人员工具的Network选项卡检查流量时,我可以在下看到cookie。但是,我看不到在下的Application选项卡中设置了coo

  • websocket请求头中如何带上cookie?