PHP设置cookie仍报SameSite错误,headers cookie来源及修复方案
问题根因与修复方案
1. 报错的headers cookie来源
你在本地localhost页面内嵌入了大量https://www.sailwbob.com域名下的静态图片,这个headers cookie是sailwbob.com站点自身服务端返回设置的,和你本地localhost写的setcookie代码完全无关。你本地代码设置的cookie域是localhost,不会作用到第三方站点sailwbob.com上,所以添加配置后不会生效。
Chrome触发报错的逻辑是:你在localhost站点请求sailwbob.com的资源属于跨站请求,sailwbob.com返回的headers cookie没有正确设置SameSite属性,因此触发了浏览器的SameSite规则告警。
2. 修复方案
分两种场景处理:
- 如果你能控制
sailwbob.com站点的服务端代码:
直接在sailwbob.com站点的服务端给headerscookie添加正确的SameSite配置即可,示例PHP配置如下:<?php setcookie("headers", "", [ 'expires' => time() + 86400, 'path' => '/', 'domain' => 'www.sailwbob.com', 'secure' => true, // 如果允许跨站请求携带就设为None,否则设Strict/Lax 'samesite' => 'None', 'httponly' => true ]); ?> - 如果你不能控制sailwbob.com站点的配置:
有两个可选方案消除本地调试的报错:- 把sailwbob.com的图片资源下载到本地项目,改用本地相对路径引用,不再跨站请求第三方资源
- 本地Chrome调试时临时关闭SameSite告警:地址栏输入
chrome://flags/#same-site-by-default-cookies,把对应选项设为Disabled后重启浏览器即可(仅推荐本地调试使用,不要长期开启)
内容的提问来源于stack exchange,提问作者DCR
相关产品推荐
相关产品推荐

