无法使用 axios POST 将项目添加到我的 DynamoDB table
Can't POST item to my DynamoDB table with axios
我正在尝试通过 axios POST 将 VS Code 中的一个项目 table 到我的 DynamoDB table。我能够通过 Postman 成功 POST 一个项目,但是当我尝试 POST 一个带有 axios 的项目时,我收到 404 响应错误(如下)。
我想知道在尝试通过 axios(如下)POST 一个项目时是否遗漏了什么。
axios({
'method': 'post',
'url': 'https://na9blqj5y5.execute-api.us-east-1.amazonaws.com/test',
'Content-Type': 'application/json',
'data': {
'body': eraseThis,
}
})
.then((response) => {
return console.log('axiosResp', response);
})
.catch((err) => console.error('axios', err))
我的一个想法是我应该导入 AWS SDK 并使用我的凭据调用我的 lambda 函数(如下)?任何帮助将不胜感激!
这是 Postman 中的成功 POST 请求。
现在我收到几周前出现的 CORS 错误(即使在 API 网关接口的 API 资源上启用了 CORS 之后)。
下面是使用 aws-sdk
更新后的代码
你的例子很难理解,因为它们不匹配。
- 第一个屏幕截图 url 与 postman 屏幕截图
的 api 网关端点地址不同
- 第一次使用 /test 阶段,第二次使用 /prod/customer
所以马上我想知道您是否只是将不同的代码部署到不同的阶段?假设您已经排除了这种可能性,但事实并非如此,我 认为 您的意思是您通过浏览器进行的 axios 调用失败,而 postman 有效。
这实际上是预期的行为,因为 postman 不是浏览器并且绕过了浏览器实施的 CORS 限制。这里有很多现有的问题可以解释这一点,所以我不会进一步讨论。
我相信解决这个问题的方法是将您的 lambda 处理程序(return 响应的实际 lambda 代理)更新为始终 return a Access-Control-Allow-Origin
header 作为documented by AWS here。要允许所有来源,您可以使用通配符 *
。例如:
headers: {
"Access-Control-Allow-Headers" : "Content-Type",
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "OPTIONS,POST,GET"
}
确保您了解使用 *
的含义,这是针对不同 post.
的讨论
不确定我做了什么,但对 dynamodb 的调用随机开始工作。我想我有一个语法错误,或者什么的..
我正在尝试通过 axios POST 将 VS Code 中的一个项目 table 到我的 DynamoDB table。我能够通过 Postman 成功 POST 一个项目,但是当我尝试 POST 一个带有 axios 的项目时,我收到 404 响应错误(如下)。
我想知道在尝试通过 axios(如下)POST 一个项目时是否遗漏了什么。
axios({
'method': 'post',
'url': 'https://na9blqj5y5.execute-api.us-east-1.amazonaws.com/test',
'Content-Type': 'application/json',
'data': {
'body': eraseThis,
}
})
.then((response) => {
return console.log('axiosResp', response);
})
.catch((err) => console.error('axios', err))
我的一个想法是我应该导入 AWS SDK 并使用我的凭据调用我的 lambda 函数(如下)?任何帮助将不胜感激!
这是 Postman 中的成功 POST 请求。
现在我收到几周前出现的 CORS 错误(即使在 API 网关接口的 API 资源上启用了 CORS 之后)。
下面是使用 aws-sdk
更新后的代码你的例子很难理解,因为它们不匹配。
- 第一个屏幕截图 url 与 postman 屏幕截图 的 api 网关端点地址不同
- 第一次使用 /test 阶段,第二次使用 /prod/customer
所以马上我想知道您是否只是将不同的代码部署到不同的阶段?假设您已经排除了这种可能性,但事实并非如此,我 认为 您的意思是您通过浏览器进行的 axios 调用失败,而 postman 有效。
这实际上是预期的行为,因为 postman 不是浏览器并且绕过了浏览器实施的 CORS 限制。这里有很多现有的问题可以解释这一点,所以我不会进一步讨论。
我相信解决这个问题的方法是将您的 lambda 处理程序(return 响应的实际 lambda 代理)更新为始终 return a Access-Control-Allow-Origin
header 作为documented by AWS here。要允许所有来源,您可以使用通配符 *
。例如:
headers: {
"Access-Control-Allow-Headers" : "Content-Type",
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "OPTIONS,POST,GET"
}
确保您了解使用 *
的含义,这是针对不同 post.
不确定我做了什么,但对 dynamodb 的调用随机开始工作。我想我有一个语法错误,或者什么的..