###今回発生した問題
ページ内でrequest.headers
にアクセスしても認証に必要なaccess-token
やclient
が見当たらない。(apiをpostmanで叩いたら見れるのに...)
###原因
APIとクライアントが異なるドメイン上にある場合に、RailsAPIにcross origin request
を許可する必要があり、expose
に関する記述が抜けていた。
###参考にしたサイト
devise-token-authの公式ドキュメント(英語)
内容は同じですが、これを翻訳してくれているサイト
devise-token-authの公式ドキュメント(和訳)
###修正したところ
ファイルの場所はプロジェクトによるが、CORS
について書かれているconfigファイルを書き換えた。今回は以下のファイルを修正する。
/back/config/initializers/cors.rb
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
###最後に
この問題を解決するに当たり、様々な記事を行き来したが、最終的には公式ドキュメントであっさり解決してしまった。