在许多成功请求之后,Ajax请求停止工作

时间:2013-03-29 22:56:56

标签: ruby-on-rails ajax jquery devise csrf

在我的Rails + Devise应用程序中,我有一个指向多个“联系人”的链接表,每个都是一个简单的jquery $ .get AJAX请求,它调用Contact#show。

在点击3到25个链接(成功!)之后不可避免地,请求将失败(响应状态为0或无法加载资源,具体取决于浏览器),之后在浏览器选项卡关闭之前它将永远不会再次运行或缓存被清除。

这是请求的javascript

$.get('/contacts/1312')

详细...

  • 我的布局顶部有csrf_meta_tags
  • 请求头包含带有元标记中正确CSRF令牌的“X-CSRF-Token”
  • 在chrome上,失败的请求不会显示在服务器日志中 作为请求。好像他们从来没有成功。报告的唯一错误 在Chrome控制台中报告失败。这让我相信它与浏览器有关。
  • 在Safari上,第一次失败时,似乎会破坏会话,任何后续请求都会导致对sign_in页面的请求,这让我相信它可能与设计有关

2013年3月30日更新:在查看SO上的许多相关问题(这一个:Rails not reloading session on ajax post),这与CSRF未正确设置有关,我不相信这个问题与CSRF因为在失败之前可以正常工作几次。

1 个答案:

答案 0 :(得分:0)

我最终确实搞清楚了。我正在使用一个功能datatables.js(一个表库),它在cookie中保存了它的状态。但是,它试图在cookie中保存的数据超过了4kb的最大值,因此我的cookie被搞砸了,导致不同浏览器的行为不同。