devise-token-authでaccess-tokenをresponseで取得できない
今回発生した問題
ページ内でrequest.headers
にアクセスしても認証に必要なaccess-token
やclient
が見当たらない。(apiをpostmanで叩いたら見れるのに...)
原因
APIとクライアントが異なるドメイン上にある場合に、RailsAPIにcross origin request
を許可する必要があり、expose
に関する記述が抜けていた。
参考にしたサイト
devise-token-authの公式ドキュメント(英語)
内容は同じですが、これを翻訳してくれているサイト
devise-token-authの公式ドキュメント(和訳)
修正したところ
ファイルの場所はプロジェクトによるが、CORS
について書かれているconfigファイルを書き換えた。今回は以下のファイルを修正する。
Rails.application.config.middleware.insert_before 0, Rack::Cors do
allow do
origins 'localhost:8080'
resource '*',
headers: :any,
expose: ['access-token', 'uid', 'client'], #この行を新たに追加
methods: [:get, :post, :put, :patch, :delete, :options, :head]
end
end
最後に
この問題を解決するに当たり、様々な記事を行き来したが、最終的には公式ドキュメントであっさり解決してしまった。
Author And Source
この問題について(devise-token-authでaccess-tokenをresponseで取得できない), 我々は、より多くの情報をここで見つけました https://qiita.com/minatatsu/items/2e29471e876f47b94d00著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .