3

CORSヘッダーのPOSTラムダプロキシメソッドとOPTIONSメソッドを持つAPIGatewayリソースを設定しました。AWS APIGateway CORS for Lambda Proxyは適用されません

OPTIONS方法は、これらのヘッダを返します。私は、生成されるJavaScript SDKでPOSTエンドポイントを呼び出すとき

$ curl -i -X OPTIONS https://xxxxxxxxx.execute-api.eu-central-1.amazonaws.com/dev/endpoint1 

HTTP/1.1 200 OK 
Content-Type: application/json 
Content-Length: 0 
Connection: keep-alive 
Date: Sat, 18 Feb 2017 17:07:17 GMT 
x-amzn-RequestId: xxxx 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Headers: Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token 
Access-Control-Allow-Methods: POST,OPTIONS 
X-Cache: Miss from cloudfront 
Via: 1.1 xxxx.cloudfront.net (CloudFront) 
X-Amz-Cf-Id: xxxx== 

はまだ、Chromeブラウザのコンソールは、このエラーを示しています

XMLHttpRequest cannot load https://xxxx.execute-api.eu-central-1.amazonaws.com/dev/endpoint1. 
No 'Access-Control-Allow-Origin' header is present on the requested resource. 
Origin 'http://localhost:8080' is therefore not allowed access. 

だけでなく、Firefoxの:

Cross-Origin Request Blocked: 
The Same Origin Policy disallows reading the remote resource at https://xxxx.execute-api.eu-central-1.amazonaws.com/dev/endpoint1. 
(Reason: CORS header ‘Access-Control-Allow-Origin’ missing). 

なぜm y CORSヘッダーは考慮されていませんか? POSTメソッドの設定を変更する必要はありますか?

+0

。 'http:// lvh.me'または' http:// www.127.0.0.1.xip.io'を使ってあなたのサイトをテストしてください。これらはlocalhostのエイリアスですが、ブラウザはそのことを認識しません。 –

答えて

5

ラムダ関数で手動でヘッダーを追加する必要があるようです。

NodeJSの場合、スクリプトは次のようになります。

context.succeed({ 
    "statusCode": 200, 
    "headers": { 
     "X-Requested-With": '*', 
     "Access-Control-Allow-Headers": 'Content-Type,X-Amz-Date,Authorization,X-Api-Key,x-requested-with', 
     "Access-Control-Allow-Origin": '*', 
     "Access-Control-Allow-Methods": 'POST,GET,OPTIONS' 
    }, 
    "body": JSON.stringify(response) 
}) 
0

をポイント下回っご確認ください。

  1. 更新されたAPIを導入しましたか?
  2. APIリソース用にOPTIONSメソッドを作成しましたか?
  3. OPTIONSメソッドのメソッド応答のレスポンスヘッダーを以下のように追加しましたか?アクセス制御 - 許可 - ヘッダ
  4. アクセス制御 - 許可 - メソッド
  5. アクセス制御 - 許可 - 起源
  6. はあなたのAPIのリソース上のアクション「CORSを有効にする」を実行しました
    • 上記のチェックが完了したら、APIリソースのGET/POSTメソッドのメソッドリクエストを確認してください。おそらくAccess Control-Allow-Origin HTTPヘッダーがAPIゲートウェイによって自動的に追加された可能性があります。

それは偽物だと、ブラウザがそれを知っているので、あなたがCORSは、おそらく「localhost」をで動作するように期待することはできませんおかげで、 ダニエル

関連する問題