首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >API网关中的所有GET方法REST返回403和HTML内容

API网关中的所有GET方法REST返回403和HTML内容
EN

Stack Overflow用户
提问于 2022-10-20 20:31:06
回答 1查看 41关注 0票数 0

我已经设置了一个API网关,通过OpenAPI规范和Lambda通过CloudFormation进行集成。如果我调用我的POST、补丁或DELETE方法(甚至选项!),它们成功地到达了我的lambda函数并按预期返回。但是,一旦我使用GET或HEAD方法调用我的一个端点--一个存在的GET端点,或者一个不存在的GET方法(如/foobar ),我所得到的就是一个HTTP403,它包含了HTML内容,而不是JSON:

代码语言:javascript
运行
复制
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<TITLE>ERROR: The request could not be satisfied</TITLE>
</HEAD><BODY>
<H1>403 ERROR</H1>
<H2>The request could not be satisfied.</H2>
<HR noshade size="1px">
Bad request.
We can't connect to the server for this app or website at this time. There might be too much traffic or a configuration error. Try again later, or contact the app or website owner.
<BR clear="all">
If you provide content to customers through CloudFront, you can find steps to troubleshoot and help prevent this error by reviewing the CloudFront documentation.
<BR clear="all">
<HR noshade size="1px">
<PRE>
Generated by cloudfront (CloudFront)
Request ID: ju-yNp9QlyjqrAFHC3xR9DkO0N9DaPK2BcVQlpeswPMEerwErwdDUw==
</PRE>
<ADDRESS>
</ADDRESS>
</BODY></HTML>

标头只包括X-Cache: Error from Cloudfront,没有一个常规的API网关报头,例如x-amzn-ErrorType。我相信这个请求甚至没有到达我的API网关。

我正在调用我的xxxxxxxx.execute-api.eu-west-1.amazonaws.com URL,所以CloudFront不是手动放在前面的,但是我猜API网关本身使用CloudFront。由于某种原因,我的GET端点是否启用了缓存?在我的API网关阶段params中,"API缓存“被禁用,并且我找不到任何与CloudFront或缓存有关的远程内容。

我的API及其集成如下所示:

代码语言:javascript
运行
复制
  /mypath:
    get:
      x-amazon-apigateway-integration:
        type: aws_proxy
        passthroughBehavior: when_no_match
        httpMethod: POST
        uri: arn:aws:apigateway:eu-west-1:lambda:path/2015-03-31/functions/arn:aws:lambda:eu-west-1:xxxxxxxxx:function:${stageVariables.LambdaName}/invocations
        requestParameters: {}
        responses:
          '200':
            statusCode: '200'
          '400':
            statusCode: '400'

这种集成适用于所有非GET请求,但对所有GET请求都会导致这个奇怪的错误。我已经准备好了DEFAULT_4XX响应,这也适用于所有其他方法,比如POST /什么--不存在--这些方法使我的自定义响应变得很好。我没有在任何地方配置HTML内容,那么为什么会发生这种情况呢?

EN

回答 1

Stack Overflow用户

发布于 2022-10-20 20:32:15

结果发现,只有当我尝试使用请求体进行GET时,才会发生这种情况。我在使用邮递员,偶然地,我把我的请求身体从以前的邮件请求。当我移除身体时,GET请求就能工作了。

我还没有找到任何方法来阻止这种奇怪的“身体不允许有GET或HEAD”的处理。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74146005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档