Chrome 94+时代:Nginx反向代理实战解决跨域Cookie难题
最近在本地开发时遇到一个头疼的问题——登录状态总是莫名其妙失效。排查了半天才发现,原来是Chrome 94版本后彻底关闭了SameSite Cookie的临时禁用选项。作为一名长期在本地环境调试前后端分离项目的开发者,这确实是个不小的挑战。本文将分享如何通过Nginx反向代理构建一个长期稳定的解决方案,彻底告别浏览器Flag失效的烦恼。
1. 理解Chrome 94+的SameSite Cookie策略变化
Chrome浏览器从91版本开始逐步收紧Cookie安全策略,到94版本更是彻底移除了通过命令行禁用SameSite默认设置的选项。这意味着我们无法再通过简单的浏览器参数调整来绕过跨域Cookie限制。
SameSite属性有三种设置:
- Strict:完全禁止跨站Cookie
- Lax:允许部分安全跨站请求携带Cookie(如导航跳转)
- None:允许所有跨站请求携带Cookie(必须同时设置Secure)
在本地开发环境中,我们通常会在localhost:8080运行前端,而API服务可能运行在localhost:3000。虽然域名相同但端口不同,浏览器仍会视为跨站请求。当后端设置的Cookie没有明确指定SameSite属性时,Chrome 94+会默认将其视为Lax,导致我们的AJAX请求无法携带Cookie。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Nginx反向代理方案设计
相比临时修改浏览器设置,通过Nginx反向代理将跨域请求转换为同域请求是更稳定可靠的解决方案。其核心思路是:
code复制前端请求 localhost/api → Nginx代理 → 实际API服务 localhost:3000/api
这样从浏览器的角度看,所有请求都发生在同源(localhost),自然绕过了SameSite限制。同时这个方案还有额外优势:
- 无需修改浏览器设置,团队成员配置一致
- 更接近生产环境配置
- 可以方便地添加HTTPS支持
3. 详细Nginx配置步骤
3.1 安装与基础配置
首先确保系统已安装Nginx。以macOS为例:
bash复制brew install nginx
安装完成后,配置文
