前提
顧客情報を入力して送信すると、
API Gateway REST APIからLambda関数を呼び出し、DynamoDBに保存する機能を作っています。
発生している問題・エラーメッセージ
送信時、以下のエラーメッセージをコンソールで吐き続けています。
Access to fetch at 'https://xxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/prod/customers' from origin 'https://xxxxxxxxx.s3.ap-northeast-1.amazonaws.com' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
顧客情報入力画面で働くJS
customer.js
1$("#createSubmit").click(function(e) { 2 e.preventDefault(); 3 4 const send = { 5 method: "POST", 6 mode: "cors", 7 headers: { 8 "Content-Type": "application/json" 9 }, 10 body: JSON.stringify("顧客情報") 11 }; 12 13 fetch('https://xxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/prod/customers', send) 14 .then(alert('送信成功')); 15});
情報を送信すると呼び出されるlambda関数
index.js
1const AWS = require("aws-sdk"); 2const dynamo = new AWS.DynamoDB.DocumentClient(); 3 4exports.handler = async (event, context) => { 5 const statusCode = 200; 6 const headers = { 7 "Access-Control-Allow-Headers" : "Content-Type", 8 "Access-Control-Allow-Origin": "*", 9 "Access-Control-Allow-Methods": "POST" 10 }; 11 const body = JSON.parse(event.body); 12 13 try { 14 await dynamo 15 .put({ 16 TableName: "xxxxxxxx", 17 Item: body 18 }) 19 .promise(); 20 } catch (err) { 21 statusCode = 400; 22 params = err.message; 23 } 24 25 return { 26 statusCode, 27 body, 28 headers 29 }; 30}; 31
試したこと
こちらのドキュメントを参考に、APIGatewayの設定をいろいろと弄くりましたが(都度デプロイしてます)、解決に至りませんでした。
- プロキシ統合は使用していません。
- 将来的にGET、DELETE、PUTメソッドも作る予定ですが、現在はPOSTのみです。
何卒、お知恵をお貸し頂けると有り難いです。。
回答1件
あなたの回答
tips
プレビュー