Ruby on rails Rails:Cookieoverflow。Rails何时使用cookies而不通知我?

Ruby on rails Rails:Cookieoverflow。Rails何时使用cookies而不通知我?,ruby-on-rails,cookies,overflow,Ruby On Rails,Cookies,Overflow,在没有公布我的Cookieoverflow问题的情况下,我想问,是什么导致Cookieoverflow 我只有一个会话varsession[:user]=@user,这是当前登录的帐户 在我的整个应用程序中,我没有遇到CookieOverflow问题,但在一个操作中,我没有使用会话或cookies变量,我得到了CookieOverflow 因此,在不详细检查我的问题的情况下,如果不是错误使用session[]和cookie[],又是什么导致Cookie溢出呢 我真的不认为用户的会话变量是真正的问

在没有公布我的Cookieoverflow问题的情况下,我想问,是什么导致Cookieoverflow

我只有一个会话var
session[:user]=@user
,这是当前登录的帐户

在我的整个应用程序中,我没有遇到CookieOverflow问题,但在一个操作中,我没有使用会话或cookies变量,我得到了CookieOverflow

因此,在不详细检查我的问题的情况下,如果不是错误使用
session[]
cookie[]
,又是什么导致Cookie溢出呢


我真的不认为用户的会话变量是真正的问题。。。我把它注释掉了,仍然得到了错误

所以问题是,“Rails在什么情况下使用cookie,而我没有明确调用它?/Rails什么时候使用cookie,而不让我知道?”

你的


Joern

@user是用户模型的一个实例,我猜

谷歌快速搜索表明,将模型存储在cookie中是个坏主意:

会话cookie的大小非常小(~4kb),是不是@user实例比它大?也许您可以在会话中存储@user.id

此外,当您对模型中其他地方@user引用的对象进行更改时,可能会出现错误;如果会话cookie正在跟踪此对象,则可能会使其超过4kb限制


只是一些想法-很高兴被那些声誉卓著的人纠正。

你不能在cookie中存储超过4k的数据。我认为你的@user variables大小超过4k。这就是产生错误的原因。

可能你的序列化
@user
对于cookie来说太大了。尝试切换到其他会话存储(DB或文件系统)。或者只将
@user.id
放入cookie。另请参阅Rails指南的第2.4节:您的cookie是否增长到超过4KB?我相信这是饼干的尺寸限制。您不必在会话中存储整个模型,我认为通常不建议这样做。尝试存储
@user.id
,看看这是否可以缓解问题。至于Rails在您不知情的情况下设置cookie的问题,答案是:仅当您使用会话时。您可以在浏览器中检查为应用程序存储了哪些cookie。如果您使用类似“LiveHTTPHeaders”插件(这是针对Firefox的插件),您可能会看到应用程序在每个请求中设置了哪些cookies。我真的不认为用户的会话变量是真正的问题。。。我把它注释掉了,仍然得到了错误。所以问题是,“在什么情况下Rails使用Cookie,而我没有明确调用它/Rails何时使用Cookie,但不让我知道”在您注释掉会话变量的使用后,您是否清除并尝试清除您的Cookie?Re:关于Rails何时使用cookie并显式调用它的问题,我不知道什么时候会发生这种情况。顺便说一句,另一个Ruby开发者在cookie中存储@user时遇到了一个非常类似的问题:。也许值得100%肯定这不是原因。对不起,我不能再帮你了:祝你好运。