【问题标题】:How to resolve Lighthouse's SameSite cookie issue如何解决 Lighthouse 的 SameSite cookie 问题
【发布时间】:2021-08-13 15:02:30
【问题描述】:

我使用了 Chrome 的站点审核工具 Lighthouse,它在我的站点上发现了以下问题:

  • 问题类型:SameSite cookie
  • /tr/?id=…(www.facebook.com)

我该如何解决这个问题?

更新

这是我在“问题”面板中看到的内容:

截图

文字

指示是否在跨站请求中通过以下方式发送cookie 指定其 SameSite 属性

由于 cookie 的 SameSite 属性未设置或无效,它 默认为 SameSite=Lax,这会阻止 cookie 被发送 跨站请求。此行为可保护用户数据免受 意外泄露给第三方和跨站请求伪造。

通过更新 cookie 的属性来解决这个问题:

-> 如果 cookie 应该在跨站点请求中发送,请指定 SameSite=None 和 Secure。这允许第三方使用。

-> 如果不应在跨站点请求中发送 cookie,请指定 SameSite=Strict 或 SameSite=Lax。

受影响的资源: 2 个 cookie:名称域和路径 _ga .bootstrapcdn.com/ cppo .facebook.com/

1 个请求

?id=383112278961246&ev=fb_page_view&dl=https%3A%2F…rl=&if=false&ts=1621983787255&sw=1920&sh=1080&at=

【问题讨论】:

  • 你能在 Devtools 控制台中查看并分享它所指的错误消息吗?
  • @person_v1.32:谢谢,我已经更新了问题。

标签: javascript google-chrome cookies lighthouse samesite


【解决方案1】:

SameSite cookie 属性本质上是告诉浏览器是否根据请求的上下文发送 cookie。 SameSite 属性可以采用三个值:StrictLaxNone

  • Strict 表示仅当用户与请求位于同一站点时,才会在请求中发送 cookie。
  • Lax 表示 cookie 也将在顶级导航中发送;即,如果用户从另一个站点导航到该站点。
  • None 也会在跨站点请求中发送 cookie。 SameSite=None 还必须与 Secure 属性配对,以防止通过 http: 发送。

更多详情请见MDNSameSite cookies explained (web.dev)

因此,如果 cookie 是由您控制的服务器设置的,您可以通过在 Set-Cookie 标头上显式设置 SameSite 属性来解决此问题。

在您的情况下,cookie 似乎是由第三方资源(Bootstrap 和 Facebook)设置的。因此,我认为您无法控制他们在 cookie 上设置的属性。您可以查看这些请求的来源并在不需要时删除这些资源(无论如何都可以这样做)。否则,我不会太担心它,除非它会导致您网站的功能出现问题。

【讨论】:

    猜你喜欢
    • 2020-11-01
    • 2020-12-15
    • 2020-02-01
    • 2020-02-14
    • 2020-12-10
    • 1970-01-01
    • 2020-02-02
    • 2016-11-20
    • 2017-07-13
    相关资源
    最近更新 更多