javascript - AWS API 网关返回 400 Bad Request,但 Postman 工作正常

标签 javascript amazon-web-services sendgrid aws-lambda aws-api-gateway

我正在使用 SendGrid Parse API ( https://sendgrid.com/blog/parse-webhook-tutorial/ ) 将传入的电子邮件正文发布到 AWS API 网关。

当我将 webhook 发送到 requestb.in 时,我得到了很好的响应。

当我使用 Postman 向我的服务器伪造请求时,我得到了正确的响应。

但是,当我告诉 SendGrid 将 webhook 发送到我的服务器时,我收到了来自 SendGrid 的 400 Bad Response 错误并且我的服务器从未受到攻击(所以我假设 API 网关正在抛出错误)。

我缺少什么简单的东西吗?我尝试设置 CORS,但不是这样(或者我设置错误)。

我很难过。

谢谢!

最佳答案

我刚刚调试了一个 API 网关问题,该问题抛出与 CORS 相关的错误消息并且请求从未到达我的服务器,但真正的问题源于请求中的数据。

所以我发现如果请求有任何问题,API 网关将抛出一个默认的 400 错误,指出没有 Allow-Access-Control-Origin header 。这会让您相信您的 CORS 有问题。如果设置 MOCK GET 请求、在浏览器中发出请求并在浏览器开发人员工具的网络选项卡中验证它返回 200,则可以消除 CORS 问题。

一旦我知道它仅来自 POST 请求,它就一定是数据问题。我发送了一个 JSON 散列,但没有对其进行字符串化。所以解决方案是使用 JSON.stringify(request_data)

我会检查请求的数据格式。如果您将请求和回复添加到您的问题中,我可能会提供进一步的帮助。

关于javascript - AWS API 网关返回 400 Bad Request,但 Postman 工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36981853/

相关文章:

javascript - 从外部 js 加载的固定页脚确实 "overlap"站点内容

amazon-web-services - 尝试检索 ASM key 时出现带有参数的意外 ARN 格式

amazon-web-services - 在 'n' 区域/桶中复制的 S3 对象有多少个 9 是持久的

java - MailConnectException : Couldn't connect to host, 端口 : smtp. sendgrid.net

php - 为什么使用 SendGrid(和其他服务)

javascript - 让 XML 以 HTML 形式显示

javascript - 如何在按钮单击事件上加载 View 作为 Kendo 窗口弹出窗口

javascript - 1 组件 2 有条件返回。如何渲染子集合?

amazon-web-services - 更新实时 AWS Sagemaker 自动缩放终端节点实例类型,无需放下它

c# - 如何使用 SendGrid for C# 发送以 UTF-8 编码的文本/html 的电子邮件?