LoginSignup
4
4

More than 5 years have passed since last update.

CORSでユーザー定義のResponse Headerを参照する

Last updated at Posted at 2016-07-28

クロスドメイン通信では、デフォルトでユーザー定義ヘッダーを参照できない

curlなどでサーバーサイドがHeaderを返すことが確認できていても、ブラウザのCORS仕様で参照できない、ということが起きる。

ブラウザでヘッダーの参照を許可するには、サーバーサイドのレスポンスヘッダに Access-Control-Expose-Headers を付加する。

例えばgolangのgin frameworkをでは以下のようにする。

// ブラウザがレスポンスヘッダーの読み取りを許可
c.Header("Access-Control-Expose-Headers", "X-HogeApp-Hogeid")

以下も合わせて設定するとgood

// 合わせてこちらも
c.Header("Access-Control-Allow-Origin", "http://hogehoge")
c.Header("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE")
c.Header("Access-Control-Max-Age", "86400")

// ブラウザからリクエストヘッダーの送信を許可
c.Header("Access-Control-Allow-Headers", "Access-Control-Allow-Headers, Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization, X-HogeApp-Hogeid")

middlewareにして

終わり

サーバーサイド視点だと「ヘッダー返してますけど」と、意外と気付かずにハマってしまう!
ブラウザ仕様も理解しておこう。

TODO

他にもCookieを使うときにハマったことや、Access-Control-Allow-Originを複数許可したい時の小技を覚えたので後で書く…かも。(Cookieを使うときはAccess-Control-Allow-Origin*にしてはいけないなど)

…全部ここに書いてあった!
http://inside.pixiv.net/entry/2014/12/16/181804

参考にしました

Qiita - CORSまとめ

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4