应配置samesite cookie策略以解决跨域请求中cookie被拦截问题:一、在chrome://flags中禁用samesite默认策略和旧版行为;二、通过命令行参数强制覆盖;三、后端响应头显式声明samesite属性;四、用开发者工具验证生效状态。

如果您在本地开发环境中使用谷歌浏览器调试涉及Cookie传输的跨域请求,但发现fetch或XMLHttpRequest携带凭据(credentials: 'include')时被拒绝,且控制台提示“Cookies not sent due to SameSite policy”,则可能是浏览器对SameSite Cookie的默认行为已变更。以下是配置SameSite_Cookie默认降级行为的具体操作步骤:
一、启用chrome://flags中SameSite默认策略覆盖选项
Chrome自版本104起将SameSite默认值从None强制升级为Lax,导致未显式声明SameSite属性的Cookie在跨站上下文中被阻止发送。可通过实验性标志临时降级为宽松策略,仅限开发环境使用。
1、在谷歌浏览器地址栏输入chrome://flags/#same-site-by-default-cookies,按回车访问该实验页面。
2、在搜索框中键入same-site-by-default-cookies,定位到“Same-site by default cookies”条目。
3、点击右侧下拉菜单,选择Disabled。
4、点击页面右下角的“Relaunch”按钮重启浏览器。

二、禁用Legacy SameSite cookie behavior标志
部分旧版Cookie解析逻辑会干扰新SameSite语义执行,需同步关闭遗留行为以确保降级策略生效。
1、在地址栏输入chrome://flags/#legacy-same-site-cookie-behavior,按回车进入设置页。
2、找到“Legacy same-site cookie behavior”选项。
3、点击下拉菜单,选择Disabled。
4、再次点击“Relaunch”重启浏览器。

三、通过启动参数强制覆盖SameSite默认策略
当flags设置因版本更新失效时,可结合命令行参数绕过SameSite默认限制,适用于自动化开发脚本或CI调试场景。
1、关闭所有正在运行的Chrome进程(包括后台任务),可在任务管理器中结束chrome.exe全部实例。
在 Linux 上通过 Chrome 挂载/VNC 自动发布小红书长笔记。Agent 撰写标题和正文后执行 xhs_publish.sh --publish --submit,触发小红书发布。
2、新建Windows快捷方式,目标字段填写完整路径及参数,例如:
"C:\Program Files\Google\Chrome\Application\chrome.exe" --unsafely-treat-insecure-origin-as-secure="http://localhost:3000" --user-data-dir="C:\ChromeDevProfile" --unsafely-allow-automation --disable-web-security
3、在参数中追加--enable-features=SameSiteDefaultChecksMethodRigorously并将其值设为false(需配合--unsafely-treat-insecure-origin-as-secure使用)。
4、双击该快捷方式启动,确认顶部出现黄色提示条即表示参数加载成功。

四、配置本地开发服务器响应头显式声明SameSite属性
前端无法单方面控制Cookie行为,必须协同后端明确设置Set-Cookie响应头中的SameSite字段,避免依赖浏览器默认降级。
1、若使用Express框架,在res.cookie()调用中加入sameSite选项:
res.cookie('sessionid', 'abc123', { httpOnly: true, sameSite: 'None', secure: true });
2、若为Nginx代理,在location块中添加add_header指令:
add_header Set-Cookie "theme=dark; Path=/; SameSite=Lax; Secure";
3、若为Apache服务器,在.htaccess中添加Header指令:
Header edit Set-Cookie "(?i)^((?!(?i)SameSite=).+)$" "$1; SameSite=Lax"
五、验证SameSite策略实际生效状态
配置完成后需通过开发者工具Network面板确认Cookie是否按预期发送,避免虚假成功。
1、打开开发者工具(F12),切换至Network标签页。
2、触发一次携带凭据的跨域请求(如fetch('/api/data', { credentials: 'include' }))。
3、在请求列表中点击对应条目,查看Headers子面板下的Request Headers区域。
4、确认Cookie字段存在且包含预期键名;若为空,则SameSite策略仍在拦截。
5、切换至Application标签页,展开Cookies列表,检查对应域名下Cookie条目的SameSite列值是否显示为Lax、Strict或None。










