首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除Rails 3子域cookie

删除Rails 3子域cookie
EN

Stack Overflow用户
提问于 2014-09-23 17:43:27
回答 2查看 355关注 0票数 3

在我的域中用户拥有多个会话cookie时,我遇到了一些问题。

在session_store中,我们最初没有使用domain: :all

因此,用户有时会得到域example.comwww.example.com的cookie。

对于外部站点,特定于子域的cookie并不重要。我只想在整个网站上吃一块饼干。

如果我只是将session_store更改为添加domain: all,并不一定意味着现有的cookies就会消失。实际上,用户现在可能有了第三个cookie,现在有了一个用于example.comwww.example.com.example.com的cookie。

考虑到cookie RFC的编写方式和Rack实现处理cookie的方式,在发出用户请求时,可能会加载错误的旧cookie。它只是从标题中加载cookie字符串中的“第一个”。

So...Does任何人都知道从用户浏览器中删除旧cookie的可靠方法。具体来说,我想从域www.example.comexample.com中删除cookie,同时将cookie保留在.example.com中。

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2020-10-23 15:04:39

如果您需要完整地阻止其他domain: :all cookie,我相信最简单的方法是直接从服务器添加一个Set-Cookie头来终止它。

代码语言:javascript
复制
# 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'

我的其他尝试:

  1. reset_sesion无法工作,因为它将根据domain: :all设置使用domain: :all
  2. 我还想让它在客户端过期,但是HttpOnly属性(rails的默认设置)阻止js操作这些cookie。
  3. 等待“会话”cookie过期可能比您想象的要长,因为大多数浏览器在重新启动后实际上不会过期(参考)
票数 1
EN

Stack Overflow用户

发布于 2015-11-12 19:40:00

更改密钥以存储会话如何?

代码语言:javascript
复制
YourApplication.config.session_store :cookie_store, key: '_your_new_session_key', domain: :all,  tld_length: 2

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26001445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档