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

前端之家收集整理的这篇文章主要介绍了ajax – Rails呈现JSON – 会话丢失?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试对一个响应 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);
});

它现在按预期工作.

猜你在找的Ajax相关文章