加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ajax – Rails呈现JSON – 会话丢失?

发布时间:2020-12-15 22:53:26 所属栏目:百科 来源:网络整理
导读:我正在尝试对一个响应 JSON的控制器进行一些Ajax调用. if session[:user] render :json = "Some Data"else render :json = "You are not logged in"end 第一次由authed用户调用此操作时,一切正常,session [:user]为!= nil. 它第二次被调用它是零! 所以看
我正在尝试对一个响应 JSON的控制器进行一些Ajax调用.
if session[:user]
  render :json => "Some Data"
else
  render :json => "You are not logged in"
end

第一次由authed用户调用此操作时,一切正常,session [:user]为!= nil.
它第二次被调用它是零!

所以看起来rails一旦渲染就会失去它的会话:json.我发现在第一个调用rails中用一个新的覆盖了* _session-cookie.因为rails不知道初始的,authed会话.

如果我不将响应呈现为JSON,一切正常.

如何强制rails在JSON渲染页面中设置与普通视图中相同的sessionid?

解决方法

经过六天的搜索,我终于做到了:

由于缺少X-CSRF-Token标头,似乎rails会破坏会话.我现在在JQuery的ajaxSend Hook中添加此标头:

$(document).ajaxSend(function(e,xhr,options) {
  var sid = $("meta[name='csrf-token']").attr("content");
  xhr.setRequestHeader("X-CSRF-Token",sid);
});

它现在按预期工作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读