【问题标题】:SameSite cookie being blockedSameSite cookie 被阻止
【发布时间】:2020-12-09 17:15:55
【问题描述】:

快速概览: 我在 domain1 打开我的网站。在页面内,我加载了一个带有 url http://domain2/...

的 iframe

我不断在 chrome 上收到此警告,它影响了我的网站:

http://domain2 上的跨站点资源关联的 cookie 设置为没有 SameSite 属性。它已被阻止,因为 Chrome 现在仅在使用 SameSite=NoneSecure 设置时才提供带有跨站点请求的 cookie。您可以在 Application>Storage>Cookies 下的开发者工具中查看 cookie,并在 https://www.chromestatus.com/feature/5088147346030592https://www.chromestatus.com/feature/5633521622188032 上查看更多详细信息。

我以前从未设置过 cookie,所以我不知道应该从哪里设置 cookie。我已经尝试在我的 domain2 nginx 配置中设置 proxy_cookie_path,但它似乎不起作用:

location / {
    proxy_cookie_path / "/; SameSite=None; Secure";
}

我还尝试添加 Set-Cookie 标头,这似乎也不起作用:

location / {
    ...
    add_header 'Set-Cookie' 'SameSite=None; Secure';
}

当我尝试第二种解决方案时,似乎从 chrome 上的响应中收到了标头,但 chrome 给出了以下警告:

请注意,domain2 也是我们的域,它有一个使用 Flask 框架的 python 后端。那么我应该从 python 代码或 javascript 前端添加 cookie 吗?

这真是令人沮丧。

【问题讨论】:

  • 尝试在服务器的响应中使用SameSite=Strict
  • @Liju 这个不拦截跨域的请求吗?
  • 它会的,如果你想在 domain1 中使用 domain2 cookie,按照这个 chromium blog 你需要将 cookie 设置为 Set-Cookie: name=value; SameSite=None; Secure; 用于 chrome,并且在你提供的屏幕截图中没有 cookie价值对。请检查是否是问题所在。

标签: python cookies cross-domain backend samesite


【解决方案1】:

跨站点资源共享 - 当请求通过同一域发送时,CORS 是一个已知问题。您可以尝试使用已经存在的flask cors package 来允许同源请求。

此外,this 问答似乎与您的相关。

【讨论】:

    【解决方案2】:

    我在 server { }location { } 块中使用了这个 proxy_cookie_flags ~ secure samesite=none;,它起作用了。

    【讨论】:

      猜你喜欢
      • 2020-12-20
      • 2020-12-16
      • 1970-01-01
      • 2020-07-04
      • 2015-04-27
      • 2017-06-10
      • 1970-01-01
      • 1970-01-01
      • 2020-04-17
      相关资源
      最近更新 更多