为啥我会收到“通过指定其 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”?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我会收到此错误

为啥我会收到这个 TypeError?

为啥我会收到序列化错误?

为啥我会收到错误消息?

知道为啥我会收到此错误吗?

为啥我会收到这种错误验证错误?