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

时间:2016-05-02 11:56:03

标签: 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时,我的回复很好。

当我使用邮递员伪造我的服务器的请求时,我得到了适当的回复。

但是,当我告诉SendGrid将webhook发送到我的服务器时,我从SendGrid收到400 Bad Response错误,我的服务器永远不会被命中(所以我假设API网关正在抛出错误)。

有什么简单的我不见了吗?我尝试设置CORS,但那不是它(或者我把它设置错了)。

我很难过。

谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

一旦我知道它只来自POST请求就必须是数据问题。我发送了一个JSON哈希而没有对其进行字符串化。所以解决方案是使用JSON.stringify(request_data)

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