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

跨域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.lryc.cn/news/524088.html

相关文章:

  • Pytorch使用教程(12)-如何进行并行训练?
  • 指针之旅:从基础到进阶的全面讲解
  • FPGA与ASIC:深度解析与职业选择
  • PostgreSQL 中进行数据导入和导出
  • SDL2基本的绘制流程与步骤
  • 面试-业务逻辑2
  • HTML之拜年/跨年APP(改进版)
  • 嵌入式硬件篇---ADC模拟-数字转换
  • 每打开一个chrome页面都会【自动打开F12开发者模式】,原因是 使用HBuilderX会影响谷歌浏览器的浏览模式
  • Access数据库教案(Excel+VBA+Access数据库SQL Server编程)
  • 09、PT工具用法
  • 华为OD机试E卷 --矩形相交的面积--24年OD统一考试(Java JS Python C C++)
  • C++ 内存分配和管理(八股总结)
  • 如何使用 JSONP 实现跨域请求?
  • 【机器学习实战入门】基于深度学习的乳腺癌分类
  • Flowable 管理各业务流程:流程设计器 (获取流程模型 XML)、流程部署、启动流程、流程审批、流程挂起和激活、任务分配
  • Kafka 日志存储 — 日志索引
  • 【大模型】ChatGPT 高效处理图片技巧使用详解
  • OceanBase 社区年度之星专访:北控水务纪晓东,社区铁杆开发者
  • Docker 实现MySQL 主从复制
  • 农业农村大数据应用场景|珈和科技“数字乡村一张图”解决方案
  • doris 2.1 Queries Acceleration-Hints 学习笔记
  • STM32 FreeRTOS 任务挂起和恢复---实验
  • Ubuntu 24.04 LTS 通过 docker desktop 安装 seafile 搭建个人网盘
  • Open3D 最小二乘拟合平面(直接求解法)【2025最新版】
  • 【CC2640R2F】香瓜CC2640R2F之SPI读写W25Q80
  • 探秘Shortest与Stagehand:开启高效测试与自动化新篇
  • llama 3 笔记
  • 写作利器:如何用 PicGo + GitHub 图床提高创作效率
  • 【文件篇】11.磁盘文件系统