私の Rails + Devise アプリには、複数の「連絡先」へのリンクのテーブルがあり、それぞれが Contact#show を呼び出す単純な jquery $.get AJAX リクエストです。
必然的に 3 ~ 25 個のリンクをクリックすると (成功!)、リクエストは失敗します (応答ステータス 0 またはブラウザによってはリソースの読み込みに失敗)。クリアしました。
リクエストの JavaScript は次のとおりです。
$.get('/contacts/1312')
詳細...
- レイアウトの上部に csrf_meta_tags があります
- リクエスト ヘッドには、メタ タグからの正しい CSRF トークンを含む「X-CSRF-トークン」が含まれています。
- Chrome では、失敗したリクエストはサーバー ログにリクエストとして表示されません。まるで彼らがそれを成し遂げたことがないかのようです。報告される唯一のエラーは、失敗を報告する chrome コンソールにあります。これにより、ブラウザに関連していると思われます。
- Safari では、最初の失敗時に、セッションが破棄されたように見えます。後続のリクエストは sign_in ページのリクエストになり、devise と関係があるのではないかと思います。
2013 年 3 月 30 日更新: SO に関する多くの関連する質問 (これ: Rails not reloading session on ajax post ) を見た後、CSRF が正しく設定されていないことに関係していると思いますが、この問題が CSRF に関連しているとは思いません。失敗する前に数回正常に動作するためです。