为啥我会收到“通过指定其 SameSite 属性指示是不是在跨站点请求中发送 cookie”?
Posted
技术标签:
【中文标题】为啥我会收到“通过指定其 SameSite 属性指示是不是在跨站点请求中发送 cookie”?【英文标题】:Why am I getting "Indicate whether to send a cookie in a cross-site request by specifying its SameSite attribute"?为什么我会收到“通过指定其 SameSite 属性指示是否在跨站点请求中发送 cookie”? 【发布时间】:2020-11-26 03:23:02 【问题描述】:在 Chrome 警告中,它说:
如果 cookie 应在跨站点请求中发送,请指定 SameSite=None 和 Secure。这允许第三方使用。
如何使用express-session
正确执行此操作?
app.use(
cors(
credentials: true,
origin: ["http://localhost:3000", "https://elated-jackson-28b73e.netlify.app"] //Swap this with the client url
)
);
var sess =
secret: 'keyboard cat',
cookie:
if (app.get('env') === 'production')
app.set('trust proxy', 1) // trust first proxy
sess.cookie.secure = true // serve secure cookies
sess.cookie.sameSite = 'none'
app.use(session(sess))
【问题讨论】:
你得到答案了吗? @Squirrl 不敢相信它有很多观点却没有答案! @Akhila 我没有。 我发现这不是客户端问题,而是在服务器端,如果您使用外部 api,您也无法控制此问题。 @松鼠 这应该是您问题的答案:***.com/questions/66503751/… 【参考方案1】:在 localhost 中运行我的代码时遇到了同样的问题。受影响的资源是_ga、_gid、_utma、_utmz。全部来自 unpkg.com 我得到了标记图像传单失败的请求,但不影响页面。
因为我不明白具体问题是什么,所以我只是删除了检查元素中受影响的资源 cookie,代码将在没有通知的情况下再次运行。
我想我知道最好不要根据个人经验来回答。只要告诉我这根本没有帮助。
【讨论】:
【参考方案2】:您收到此信息是因为您正在使用来自另一个站点的资源,并且该服务器正在尝试设置“cookie”,但是它没有设置 SameSite 属性,这在较新版本的浏览器中被报告。
如果您尝试从通常未安装 SSL 的本地计算机 (xampp) 访问服务器页面,也会显示此(可能);
在您的服务器页面(如果使用 php)中设置标题行,如下所示:header("Set-Cookie: cross-site-cookie=whatever; SameSite=None; Secure");
(记住:这必须从服务器端解决。)
【讨论】:
如果我的 React 应用程序中出现此错误怎么办?有什么方法可以达到同样的效果?以上是关于为啥我会收到“通过指定其 SameSite 属性指示是不是在跨站点请求中发送 cookie”?的主要内容,如果未能解决你的问题,请参考以下文章