【问题标题】:Python Flask set_cookie domain attribute doesn't workPython Flask set_cookie 域属性不起作用
【发布时间】:2019-08-30 20:51:05
【问题描述】:

根据Flask Documentation,我应该能够为除了我自己的域之外的域设置一个域路径的cookie,如下所示:

resp = make_request(render_template(index.html))
resp.set_cookie('cookiekey', 'cookievalue', domain='notmydomain.example.com')

我只需要为我的域设置 cookie

resp.set_cookie('cookiekey', 'cookievalue')

它们被浏览器(Chrome)接受。但是,当我尝试设置域时,它们不会出现在浏览器中。此外,使用邮递员进行测试表明 Set-Cookie 标头已发送,并且是正确的。

这是否意味着浏览器只是忽略了我的请求,如果是,我怎样才能让它接受我的 Set-Cookie 标头?

【问题讨论】:

  • 浏览器只是拒绝cookie,因为基本策略没有得到遵守:cookie必须设置为当前域或其子域。

标签: python flask setcookie


【解决方案1】:

TL;DR:您不能为与当前域完全分开的域设置 cookie。

为您无法控制的域设置 cookie 会带来巨大的安全风险。 domain 属性只允许您为整个域或子域设置 cookie。例如,系统可以通过这种方式让您通过“auth.example.org”等子域登录,然后将您重定向到“example.org”。

在实践中,“统一”登录系统很复杂:使用挑战并且可能通过后端交换数据,而不是依赖浏览器正确允许其他子域访问原始 cookie。

【讨论】:

  • 所以我在进行广泛的邮递员测试时发现了这一点,因此接受了这个答案。作为后续,如果我拥有一个域 (example.com) 并将我的网站保存在一个子路径 (www.example.com) 上,并将另一个子域指向需要 cookie 的服务器 (data.example.com),然后设置整个域 (*.example.com) 使用的 cookie,浏览器会接受 this 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-26
  • 1970-01-01
  • 2018-02-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多