go - 如何让我的 Go Lambda 函数在浏览器中调用它时给我一个响应?
问题描述
我在 Go 中创建了一个微服务,它从请求正文中解组数据并将其存储在 DynamoDB 中。REST URL 几乎可以在任何地方运行,但似乎是浏览器。当我在浏览器中运行 fetch 时,我得到一个 403 没有响应。我可以使用 Node 脚本、curl 命令或什至使用 repl.it 之类的工具进行测试时得到 200 响应。但出于某种原因,它永远不想在 Web 应用程序或开发控制台(我使用的是 Chrome)中工作。我尝试在多个网站中运行该请求,包括我正在构建的用于运行它的 Web 应用程序,并且所有这些网站都给出了相同的 403 无响应结果。
在 API Gateway 中,授权设置为“无”,API 密钥设置为“不需要”,所以我很难看到如何在我的端点上获得 403。在前端,我的 fetch 请求如下所示。有效的 curl 命令也在下面。我在创建这个之前关注了这个帖子,虽然它很相似,但这个人确实得到了回应,而我的没有给我任何回应。它作为脚本工作,但在浏览器中不起作用。除了在浏览器内部,它如何在任何地方工作?如果我能得到一些关于正在发生的事情的信息,那就太棒了。如果我能得到一些关于如何解决这个问题的信息,那真是太棒了。
js
fetch(url, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
data: JSON.stringify({
Email: 'example@test.com'
}),
})
.then(res => res.json())
.then(json => console.log(json))
.catch(e => console.error(e))
卷曲
curl -H 'application/json' -d '{ "Email": "example@test.com" }' $URL
更新:我发现我出了什么问题。这是一个 CORS 问题。我没有处理在我的 POST 请求之前作为预检请求发送的 OPTIONS 方法。OPTIONS 方法在浏览器中时会自动发送,但如果您在其他任何地方运行代码则不会。
解决方案
推荐阅读
- cmake - CMake 用 add_custom_target 中的相对“../../”替换命令的部分绝对路径
- server - isc-dhcp-server.service 失败
- ruby - Xcode 在运行阶段找不到 ruby 脚本
- ios - Xcode 说 found nil,但实际值不是 nil
- api - Web服务与http和api有什么区别?
- java - Android 10+ 未从 MediaStore 检索 DATE_TAKEN 信息
- spring-boot - 从实现 jar 中排除 spring-cloud-deployer-spi-scheduler-test-app
- python - 在 Alembic 迁移文件头中包含用户名
- web-scraping - 有没有办法获取抽搐视频数据?
- java - ArrayList 索引超出范围但 HashSet 没有问题