在AWS上是否允许获取带有正文的请求? CloudFront出现403错误

时间:2019-04-29 20:04:51

标签: amazon-web-services api http aws-sdk amazon-cloudfront

我使用Visual Studio向AWS发布了一个api,并使用了AWS无服务器应用程序项目的模板,现在我正在用邮递员测试方法,但是所有需要正文的get方法都返回一个错误,该错误在响应中提到了Cloudfront ,我不知道该问题是否与cloudfront有关,或者是否是AWS HTTP 1.1规范实现不允许带有主体的请求:

注意:我们要求客户提供带有正文的请求

RFC 7231 HTTP / 1.1规范指出以下内容:  GET请求消息中的有效负载没有定义的语义。  在GET请求上发送有效内容正文可能会导致一些现有内容  拒绝请求的实现。

Sinon

所以我的问题是:

  1. AWS中是否允许获取带有正文的请求?
  2. AWS如何处理正文请求?
  3. 是否有一种方法可以使工作在AWS上通过主体获取请求?

我在这里看到了几乎相同的问题:AWS GET request with body rejected by CloudFront

他们指向此文档:https://docs.aws.amazon.com/apigateway/latest/developerguide/getting-started-lambda-non-proxy-integration.html表示如果您发送带有正文的get请求,它将返回400错误,但我得到的错误是403错误

那么您能再澄清一点吗?还是可以指向提到获取请求限制的亚马逊文档?

非常感谢

1 个答案:

答案 0 :(得分:0)

在CloudFront上不允许使用带有Body的GET请求,如果发送正文,您将得到403,尽管RFC并未明确规定您应该拒绝带有Body的GET,但是CloudFront不允许这样做。在GET请求中传递正文的最佳选择是查询字符串(请求的最大长度,包括标头和查询字符串20,480字节)。

https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/RequestAndResponseBehaviorCustomOrigin.html

获取包含正文的请求 如果查看器的GET请求包含主体,则CloudFront会向查看器返回HTTP状态代码403(禁止)。