私は現在、CORSで角度クライアントからアクセスされるAPI Gatewayおよびラムダを経由して作業POST機能を持っています。私はあなたの設定が何であるかはわかりませんが、あなたが逃したかもしれないことを期待して、関連するすべての設定を共有することができます。 CORSを有効にすることは、現時点ではかなり苦痛であり(おそらく、Amazonが修正に取り組んでいることがあります)、多くの分野で多くの小さなステップを必要とし、ドキュメントは非常に貧弱です。
私は自分のリソースのための2つの方法(OPTIONSとPOST)を持っていると私はそれぞれに関連する設定を共有します:
POST:
メソッド要求:特別な何もありません。私のエンドポイントの場合は、自分のルートパラメータの1つにパスを要求するオプションがあります。私はクエリ文字列を使用していないので、URLクエリ文字列は空です。 HTTP要求ヘッダーも空です。
統合要求:
統合タイプ:ラムダ マッピング・テンプレート:私は私のラムダ関数へのリクエストボディとルートパラメーターの適切な値を渡すためにテンプレートと1(アプリケーション/ JSON)を持っています。
メソッドの応答:
は200のステータスコードフィールドを展開します。 「Access-Control-Allow-Origin」のヘッダーを追加し、チェックマークボタンをクリックして保存します。これは他のステータスコードに対して行う必要があります。
統合応答:
は200レスポンスステータスフィールドを展開します。ヘッダーマッピングで、マッピング値に '*'を含むように変更します。一重引用符は必須です。あなたが持っているかもしれない他の統合応答のためにこれをしなければならないかもしれません。
OPTIONS:
メソッド要求:ちょうどPOSTメソッドのような特別な
何も、。
統合リクエスト:
私はモック統合に設定しました。 Amazonによると、それは問題ではないので、実際に必要なのは適切なヘッダーを200に返すことだけです。マッピングテンプレートはありません。
メソッドの応答:
は200のステータスコードフィールドを展開します。次の3つの応答ヘッダーを追加し、チェックボックスを付けて保存します。アクセス制御許可ヘッダー、アクセス制御許可メソッド、アクセス制御許可許可元。その他のステータスコードはありません。
統合応答:
は200レスポンスステータスフィールドを展開します。正規表現は空です(デフォルトに設定されています)。このメソッドは200応答のみを持ちます。ヘッダーマッピングを展開し、ヘッダーを次のマッピング値に設定します。
Access-Control-Allow-Headers: 'Content-Type,X-Amz-Date,Authorization,X-Requested-With'
Access-Control-Allow-Methods: 'GET,POST,OPTIONS'
Access-Control-Allow-Origin: '*'
マッピングテンプレートはありません。
次に、APIを展開します。うまくいけばCORS要求が可能になりました。あなたとまったく同じ問題が発生しました。問題がAccess-Control-Allow-HeadersのX-Requested-Withの値を忘れていたことはかなり確かです。
エンドポイントURLは何ですか? localhostでない場合は、CORS(https://en.wikipedia.org/wiki/Cross-origin_resource_sharing)の制限のためリクエストを行うことができません。リクエストをプロキシするか、宛先と同じURLからリクエストする必要があります。 –
APIゲートウェイ(投稿とオプションの両方)のAccess-Control-Allow-Originの値は – Luc
'*'です。リンク先のドキュメントと同様です。 OPTIONSメソッドとPOSTメソッドの両方で同じ – dudemonkey