2016-10-11 15 views
1

私はDeviseを認証に使うRailsアプリケーションを持っています。私は通常のRailsビューを通して認証し、ほとんどのアプリケーションは通常のRails ActionViewページで行われます。Rails/Devise:XHRが返す401

私のアプリの1ページには、同形フェッチライブラリでXHR経由でデータを要求するReactアプリが含まれています。私はSafariでそれを開発していますが、うまくいきますが、ChromeやFirefoxではXHRを試してみるとHTTP 401メッセージが表示されます。

Safariではセッションクッキーを設定する 'Set-Cookie'というレスポンスヘッダーを取得していますが、Chromeではそうではありません。私のAJAXにX-CSRF-Tokenを追加する *は、新しいRailsの5アプリだtrueにconfig.http_authenticatable_on_xhrを設定し、config.navigational_format = [:html, :json]

を設定*リクエスト をフェッチ:ここ

は、私が試したものです。私はXHRがうまく動作する同様のRails 4アプリケーションを持っています。私のXHRはここでどのように動作させるのですか?

+0

送信されたヘッダーをさまざまなブラウザで確認しましたか?たぶん欠けているものがあります。 –

答えて

5

私はこれを動作させました。私はAJAX呼び出しのためにjQueryを使用していた私の以前のアプリをチェックしました。 fetchjquery-ujsに変更したところ、それは機能しました。私は自分の問題がリクエストでセッションクッキーを送信していないことがわかった。私はisomorphic-fetchでこれを行う方法を研究し、github/fetchの文書が見つかりました。このようにリクエストを構成すると、次のように動作します。

fetch('/my_resource.json?param=someparam', { 
    'credentials': 'same-origin' 
}) 

クッキーを送信する必要があります。

+0

それは良い掘り出し物です。ありがとう! – Sarasranglt

関連する問題