🌚
SwaggerでHTTPリクエストを実行したが期待するレスポンスヘッダーが表示されないとき
問題
SwaggerでHTTPリクエストを実行したけれども、レスポンスヘッダーに'access-token', 'uid', 'client'
といったヘッダーが表示されませんでした。
対応方法
Access-Control-Expose-Headersにヘッダーを追加すれば良いです。
今回APIはRailsで作成しています。CORSの設定はrack-cors
というgemを使用しています。
その場合のAccess-Control-Expose-Headersへの追加方法はこちらです。
Rails.application.config.middleware.insert_before 0, Rack::Cors do
allow do
origins ENV['ALLOW_ORIGIN'] || ""
resource "*",
headers: :any,
expose: ['access-token', 'uid', 'client', 'expiry', 'token-type'], # ここに追加
methods: [:get, :post, :put, :patch, :delete, :options, :head]
end
end
終わりに
"request header" "not include" "swagger" みたいな感じで検索して、以下の情報に辿り着きました。この情報でCORSの問題だとわかりました。
CORSは雰囲気でしか理解していないので、CORSの問題と気づくのに時間がかかりました...
早くCORSの問題だと気付く人が増えれば良いなと思い、記事を公開しました。
参考にさせていただいたリンク
Discussion