在我的域中用户拥有多个会话cookie时,我遇到了一些问题。
在session_store中,我们最初没有使用domain: :all。
因此,用户有时会得到域example.com和www.example.com的cookie。
对于外部站点,特定于子域的cookie并不重要。我只想在整个网站上吃一块饼干。
如果我只是将session_store更改为添加domain: all,并不一定意味着现有的cookies就会消失。实际上,用户现在可能有了第三个cookie,现在有了一个用于example.com、www.example.com和.example.com的cookie。
考虑到cookie RFC的编写方式和Rack实现处理cookie的方式,在发出用户请求时,可能会加载错误的旧cookie。它只是从标题中加载cookie字符串中的“第一个”。
So...Does任何人都知道从用户浏览器中删除旧cookie的可靠方法。具体来说,我想从域www.example.com和example.com中删除cookie,同时将cookie保留在.example.com中。
谢谢。
发布于 2020-10-23 15:04:39
如果您需要完整地阻止其他domain: :all cookie,我相信最简单的方法是直接从服务器添加一个Set-Cookie头来终止它。
# When you believe the client is sending a cookie with `Domain=www.example.com` or `Domain=example.com`, instead of `Domain=.example.com`
response.set_header('Set-Cookie', '_my_app_session=expiring; Path=/; Max-Age=0; HttpOnly')
# For Rails < 5 (not tested)
headers['Set-Cookie'] = '_my_app_session=expiring; Path=/; Max-Age=0; HttpOnly'我的其他尝试:
reset_sesion无法工作,因为它将根据domain: :all设置使用domain: :allHttpOnly属性(rails的默认设置)阻止js操作这些cookie。发布于 2015-11-12 19:40:00
更改密钥以存储会话如何?
YourApplication.config.session_store :cookie_store, key: '_your_new_session_key', domain: :all, tld_length: 2
https://stackoverflow.com/questions/26001445
复制相似问题