【发布时间】:2020-12-09 17:15:55
【问题描述】:
快速概览: 我在 domain1 打开我的网站。在页面内,我加载了一个带有 url http://domain2/...
的 iframe我不断在 chrome 上收到此警告,它影响了我的网站:
与 http://domain2 上的跨站点资源关联的 cookie 设置为没有
SameSite属性。它已被阻止,因为 Chrome 现在仅在使用SameSite=None和Secure设置时才提供带有跨站点请求的 cookie。您可以在 Application>Storage>Cookies 下的开发者工具中查看 cookie,并在 https://www.chromestatus.com/feature/5088147346030592 和 https://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