2017-09-28 17 views
1

APIキャッシュを有効にして、AWS内のAPIゲートウェイの背後にラムダがラムダを配備しました。不正なCORS応答を提供するAPIゲートウェイを使用するラムダ

これは標準OPTIONSAccess-Control-Allow-Origin: *のヘッダマッピングを作成したCORSオプションを有効に使用して構成されています。

しかし、ラムダでメソッドを実行するためにAPIが呼び出されると、応答のヘッダーが要求のoriginヘッダーに設定されています。

これは、私がAPIキャッシュを有効にしたので、問題を引き起こしています。

これは、応答がドメイン固有のAccess-Control-Allow-Origin応答でキャッシュされているようです。すなわちAccess-Control-Allow-Origin: *ではなくAccess-Control-Allow-Origin: {whatever the origin header of the request was

これは、クライアントからCORSエラーを引き起こしています。

この現象に関するドキュメントはありません。なぜこれが起こっているのですか?

+0

'Origin'という値を持つ' Vary'レスポンスヘッダもレスポンスに追加できるようにすると、 'Origin'リクエストヘッダの値がキャッシュされたリクエストの' Origin'値と異なるときこれは、キャッシュをスキップさせるという効果があり、代わりに新しいネットワーク要求を行う必要があります。 [HTTP仕様の関連部分](https://tools.ietf.org/html/rfc7231#section-7.1.4)と[VaryのMDN記事](https:// developerを参照してください。 mozilla.org/en-US/docs/Web/HTTP/Headers/Vary)。 – sideshowbarker

+0

ラムダがAPIゲートウェイで使用されている場合、これは@sideshowbarkerとは考えられません。 AWS内で応答ヘッダーを設定する機能は削除されました。 –

答えて

0

APIゲートウェイではなく、ラムダ内でCORS応答が生成されていました。

PythonベースのLambdaで使用されているフラスコ・コルス・ライブラリが正しく設定されていませんでした。

ドキュメントを1として

send_wildcard(ブール値) - Trueの場合、および起源のパラメータが*で、 ワイルドカードアクセス制御 - 許可 - 起源ヘッダがむしろ 要求の起源よりも、送られますヘッダ。

デフォルト:コード

CORS(app) 

ので、Falseが

CORS(app, send_wildcard=True) 

に変更されていると私はAccess-Control-Allow-Originヘッダーのためである私が欲しいの挙動を、取得知っていますbe to be *

関連する問題