request.cookies和控制器中的cookie有什么区别?

Ved*_*shu 5 ruby ruby-on-rails-4

ROR4 request.cookiescookies对象之间有区别吗?

我目前正在尝试从我的node.js服务器向我的ROR4应用程序发送带有cookie的请求.似乎在ROR应用程序中,request.cookies包含我发送的cookie但是cookies对象(现有逻辑所基于的)没有它.

我搜索了文档,但无法找到任何相关内容.有没有我错过的东西?任何帮助表示赞赏.

aBa*_*boy 6

理想的情况下,request.cookiescookies应该是相同的.但是,在POST(创建操作)请求中,rails会验证XSRF令牌.如果该验证失败,则来自的cookie request.cookies不可用request.cookie_jar.这意味着,通过该cookies方法无法使用它们.

确定cookie是否不匹配是因为XSRF令牌丢失.在您的请求中,尝试识别Cookie哈希的类.cookies.hash应该回报你ActionDispatch::Cookies::CookieJar.如果它返回ActionController::RequestForgeryProtection::ProtectionMethods::NullSession::NullCookieJar,则您的XSRF令牌不匹配.

当您通过javascript进行这些调用时,可能会发生这种情况,默认情况下不会选择XSRF令牌并随请求一起发送.请参阅此处的答案:https://stackoverflow.com/a/8175979/976880以了解如何解决此问题.


Fre*_*ung 5

request.cookiesRack 提供的方法。它只是键值对的散列,通过解析 cookie 标头获得。

控制器cookies方法返回request.cookie_jar. cookie jar 是由完全相同的request.cookies数据构建的,但解析它在顶部添加了一堆 rails 功能,例如签名 cookie、将数据序列化为 cookie 等。

我看不出有任何理由为什么密钥会出现在一个中,而另一个中却没有。