当前位置: 首页 > article >正文

跨域cookie携带问题总结

背景

我们知道很多场景,都需要前端请求带上cookie,例如用户鉴权、登陆校验等。而有些场景下,我们会发现请求不会带上cookie,这是为什么呢?

概念

cookie是种在域名下的信息。只有请求同域且同站的请求,才能携带cookie。

首先,我们需要了解,跨站(cross-site)和跨域(cross-origin)是两个概念:

  1. 同站指:只要两个 URL 的 eTLD+1 相同即可(有效顶级域名+二级域名),不需要考虑协议和端口

  2. 同源指:协议/主机名/端口完全一致

浏览器的默认配置same-site:Lax,意味着部分cookie允许跨站请求携带,需同时满足以下条件:

  1. 顶级导航链接,如a标签(iframe不行)

  2. GET、HEAD请求(POST不行)

Secure: 只有HTTPS请求才会带cookie

HttpOnly: 客户端无法读取和修改cookie。

跨域能否携带cookie?

理论上,我们解决跨域问题无非是两种方式:

1. 直接请求跨域域名,前端设置withCredentials,然后后端设置CORS请求头来允许跨域。

2. 通过后端代理的方式,先访问同域名的后端服务,然后在后端转发到其他服务。

第一种方法,在same-site:Lax的情况下,是无法携带跨站cookie的。

第二种方法,可以携带cookie。

解决方案

1. 通过设置浏览器中的same-site: None;和HttpOnly: true,来实现跨站的cookie携带。但是这种方法基本只能解决本地调试问题,线上不可能通过这种方法。

2. 通过代理的方式携带cookie。推荐使用这种方案。 


http://www.kler.cn/a/512971.html

相关文章:

  • TCP断开通信前的四次挥手(为啥不是三次?)
  • Linux:进程(三)
  • HTML语言的多线程编程
  • BH1750使用程序
  • Docker 实现MySQL 主从复制
  • PyTorch使用教程(8)-一文了解torchvision
  • Skywalking python agent安装配置
  • 【源码+文档+调试讲解】基于Spring Boot的协作会话平台
  • C++0到1面试点(二)
  • web-view环境下,H5页面打开其他小程序
  • Linux 如何使用parted进行磁盘分区?
  • HTML<img>标签
  • Qt Network编程之HTTP请求与处理
  • AI 之网:网络诈骗者的 “高科技伪装术”—— 智能诈骗的神秘面纱
  • jenkins-视图管理
  • TDengine 做 Apache SuperSet 数据源
  • 工业制造离不开的BOM
  • 为AI聊天工具添加一个知识系统 之57 前端工具:知识图谱、语义网络和认知地图 之2
  • 产品溯源管理系统(源码+文档+部署+讲解)
  • Docker Compose的使用
  • 9种提高 GitHub 国内访问速度的方案_hub
  • Spring Boot Actuator 详细介绍
  • Vue 3 自定义 Hook:实现页面数据刷新与滚动位置还原
  • 【2024年华为OD机试】(A卷,100分)- 匿名信 (Java JS PythonC/C++)
  • 【python】基于决策树,SVM 和 神经网络 预测银行客户流失
  • 认识 Milvus 向量数据库