如何在www.example.com的两个子域之间共享cookieherokuapp.com?

gwbalxhn  于 2023-01-17  发布在  其他
关注(0)|答案(1)|浏览(154)

我目前正在Heroku上尝试托管一个网站,我部署了后端,您可以考虑使用yyyy.herokuapp.com,前端可以考虑使用xxxx.herokuapp.com
现在,这里的问题,我需要设置xxxxyyyy之间的cookie,我知道这将是一个巨大的安全问题,但由于这是一个实验网站,我不愿意得到一个自定义域,我试图设置cookie的域:一米四氮一x一米五氮一x一米六氮一x一米七氮一x一米八氮一x。
然而,它不工作,chrome拒绝cookie,并给出以下消息:
通过Set-Cookie标头设置Cookie的尝试被阻止,因为其Domain属性对于当前主机URL无效。
那么,我如何在不需要自定义域的情况下处理这个问题呢?这是我设置cookie的配置(在使用flask的后端)

response.set_cookie("example_cookie", value="cookie value", 
    max_age=900, expires=datetime.datetime.utcnow() + 
    datetime.timedelta(seconds=900), secure=True, domain=".herokuapp.com", 
    samesite='none')
dfty9e19

dfty9e191#

如果herokuapp.com不是 *public后缀 *(也称为 * 有效顶级域 * 或 eTLD),则在xxxx.herokuapp.com使用Domain=herokuapp.com设置cookie的情况下,浏览器会将该cookie发送到yyyy.herokuapp.com
然而,有一个障碍:为了隔离不同的租户,Heroku不久前要求herokuapp.com be added to the public-suffix list。大多数浏览器拒绝为公共后缀设置cookie:
出于安全原因,许多用户代理被配置为拒绝与“公共后缀”对应的域属性。例如,一些用户代理将拒绝“com”或“www.example.com“的域属性co.uk。
因此,正如您所经历的那样,使用Domain=herokuapp.com设置cookie的尝试将被浏览器拒绝。
注意:在Set-Cookie HTTP头的Domain属性中添加前导点没有任何效果,至少在现代浏览器中是这样。
为了摆脱这个困难,你可以简单地买一个便宜的域名(比如infinityvive.com),从它的子域服务于你的前端和后端,然后你就可以使用Domain=infinityvive.com,因为你的域名不会是一个公共后缀。

相关问题