node.js - AWS API GATEWAY <=> AWS Lambda CORS 问题
问题描述
这是我第一次使用 AWS,我确实设置了 DynamoDB 表并创建了 Lambda 函数来进行 CRUD 操作,我首先将函数设为静态。然后,我继续创建 API Gateway 方法来动态访问 Lambda 函数。
我尝试调用的方法是 GET 方法,它应该可以使用 JS 调用,并且可以从不同的域调用,我需要启用 CORS,不幸的是,即使在我的 lambda 函数的标头中有它之后,它也会给我 CORS 错误:
'use strict';
const AWS = require('aws-sdk');
AWS.config.update({ region: 'us-east-2' });
exports.handler = async (event, context) => {
const ddb = new AWS.DynamoDB({ apiVersion: '2012-10-08' });
const documentClient = new AWS.DynamoDB.DocumentClient({ region: 'us-east-2' });
let responseBody = "";
let statusCode = 0;
var params = {
TableName: "Users",
};
// scan is a function, that is like the SELECT .. WHERE .. clause in SQL
try{
const data = await documentClient.scan(params).promise();
responseBody = JSON.stringify(data.Items);
statusCode = 200;
}catch(err) {
responseBody = `Unable to Scan Users, error: ${err}`;
statusCode = 403;
}
const response = {
statusCode: statusCode,
headers: {
"access-control-allow-origin": "*"
},
body: {
responseBody
}
};
return response;
};
这是我在 VueJS 应用程序中的代码,它应该向 API Gateway 中的 GET 方法发出请求:
try{
const res = await axios.get("https://here-goes-my-url");
console.log(res.data);
} catch (err){
console.log(err);
}
这是我得到的错误:
Access to XMLHttpRequest at 'https://here-goes-the-url' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Lambda GET 方法应返回“用户”表中的所有项目。请帮忙,谢谢!
解决方案
推荐阅读
- javascript - 如何使用新的 PayPal JavaScript SDK 关闭发货
- java - 滑动手势材料设计
- javascript - 更改表格中的行高
- google-apps-script - 带有公式值的 Google 表格 appendRow
- python - 不确定应该将哪个实例传递给参数
- macos - 文件夹中所有文件的 Shell 命令(macOS)
- javascript - 当一个类出现在 ViewPort 中时 jQuery 隐藏
- multithreading - 在 C 中生成具有相同参数的 n 个 pthread 的最有效方法
- python - 在 pandas 数据框列中展开嵌套的字典列表
- delphi - Delphi OmniThreadLibrary 和异步