微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

张贴到表单,说用户未登录,会话cookie存在

如何解决张贴到表单,说用户未登录,会话cookie存在

|| 我有一种形式,当提交时,它将调用一个jquery .ajax请求,例如:
$.ajax({
 type:\"POST\",url: \"/posts/\" + id + \"/add_comment\",..
 ..
});
该网站具有子域,登录后的会话cookie如下所示:
name: __webt_session
value: ...
host: testsubdomain.lvh.me
path: /
Secure: No
Expires: At end of session
现在,当我提交评论时,它不会保存评论,而是重定向登录页面(该html用于登录页面,它实际上不重定向b / c,这是幕后的ajax调用) 。 表单操作的网址是否必须包含子域? 顺便说一句,为什么它说“安全:否” 更新 我将发布网址设置为包括带有子域的完整网址,并且仍在重定向登录页面。为什么不拿起Cookie? 当我在要发布表单的页面上时,就可以正常登录了。网址中有子域名。一定是由于某种原因,当我发布到页面时,它认为我尚未登录重定向我(您必须先登录才能发表评论)。非常困惑为什么它没有拿起cookie。 有想法吗?     

解决方法

如果控制器的动作为
protect_from_forgery
,请确保帖子的位置为
authenticity_token
在rails 3.0.x(x> 3)中,如果
verify_authenticity_token
失败,它将注销您,因此身份验证将失败。 更新 为此,您需要在JavaScript帖子中添加一个名为
authenticity_token
的帖子参数。可以通过两种方式确定此参数的值: 1)在您的控制器中调用
form_authenticity_token
并将此值传递给javascript。 2)在您的布局中,添加此行
<%= csrf_meta_tag %>
这会将以下内容添加到文档的开头
<meta name=\"csrf-param\" content=\"authenticity_token\"/> 
<meta name=\"csrf-token\" content=\"Sm8z1XLTzI5HCy7+MIB+yFXiGUdS1byUHI8brHknirY=\"/>
您可以使用类似以下的JavaScript来检索发布值:
document.getElementsByName(\'csrf-token\')[0].content
在此版本中,您可能会更正确,并使用
document.getElementsByName(\'csrf-param\')[0].content
确定post参数的名称     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。