【问题标题】:AWS API gateway returns 400 Bad Request, but Postman works fineAWS API 网关返回 400 Bad Request,但 Postman 工作正常
【发布时间】:2016-05-02 11:56:02
【问题描述】:

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

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

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

但是,当我告诉 SendGrid 将 webhook 发送到我的服务器时,我从 SendGrid 收到 400 Bad Response 错误,并且我的服务器永远不会受到攻击(因此我假设 API Gateway 正在抛出错误)。

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

我被难住了。

谢谢!

【问题讨论】:

  • "Server" 在这种情况下有点模棱两可。您能否通过区分您对 API 网关端点和后端/集成端点发出的测试请求来澄清一下?
  • 您还能确保内容类型和接受标头正确传递给 API 网关吗?

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


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-07
    • 1970-01-01
    • 1970-01-01
    • 2020-11-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-29
    相关资源
    最近更新 更多