AWS API Gatewayを使用して新しいサービスを作成しようとしていますが、CORS情報を取得するためにブラウザーが自動的にOPTIONSメソッドを呼び出すことがわかりました。
問題は、AWS API GatewayがCORSヘッダーを構成するネイティブな方法を提供していないことです。
OPTIONSメソッドに応答するためにLambdaスクリプトを作成することは可能ですか?
{proxy+}
エンドポイントを使用している場合は、Lambda関数でCORS HTTPリクエストを処理する必要があります。実装は、使用しているフレームワークによって異なります。 Expressの場合、最も簡単な解決策は、単純に Express CORSミドルウェア を使用することです。
CORS
によるLambda
リクエストを処理したくない場合は、Lambda Method
の設定を変更して、API Gateway
レベルでCORS
を処理するようにしてください。
AWS API GatewayでのCORSセットアップ の詳細な公式チュートリアルは次のとおりです。
X-Api-Key
でヘッダーAccess-Control-Allow-Headers
を許可することも重要です。そうしないと、認証が機能せず、エラーが発生します。
EDIT:2015年11月、API GatewayチームはCORS設定を簡素化する新機能を追加しました。
ラムダプロキシを有効にしている場合は、CORSヘッダーを手動で設定する必要があります。
module.exports.hello = function(event, context, callback) {
const response = {
statusCode: 200,
headers: {
"Access-Control-Allow-Origin" : "*", // Required for CORS support to work
"Access-Control-Allow-Credentials" : true // Required for cookies, authorization headers with HTTPS
},
body: JSON.stringify({ "message": "Hello World!" })
};
callback(null, response);
};
https://serverless.com/framework/docs/providers/aws/events/apigateway#enabling-cors
JQuery $ .ajaxを使用している場合は、OPTIONSリクエストの後にPOSTを付けてX-Requested-Withを送信します。そのため、OPTIONSアクセスコントロールを設定するときに確認する必要があります。 AWS APIの-accept-headersを使用して、他のヘッダーとともにX-Requested-Withヘッダーを含めます。