【问题标题】:AWS API Gateway - 400: Bad RequestAWS API Gateway - 400:错误请求
【发布时间】:2021-08-25 08:28:00
【问题描述】:

我有一个 HTTP 代理端点,经过测试可以正常工作:

Request: /results?auth=abc123&id=9876&start=2016-08-20&end=2016-09-01
Status: 200
Latency: 265 ms

当通过 Postman 定位时,返回以下内容:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
    <head>
        <title>400 Bad Request</title>
    </head>
    <body>
        <h1>Bad Request</h1>
        <p>Your browser sent a request that this server could not understand.
            <br />
        </p>
    </body>
</html>

端点设置如下(部分信息已编辑):

没有身份验证或授权设置(它是直接传递查询参数)。

【问题讨论】:

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


    【解决方案1】:

    我在这上面花了几个小时。

    在我的情况下,这仅发生在 XHR 中,在预检期间导致 CORS 错误(“访问 XMLHttpRequest at '...' from origin'...' 已被 CORS 策略阻止:No 'Access- Control-Allow-Origin' 标头存在于请求的资源上”)——即使标头已正确配置并从后端(通过 HTTP 代理集成)和CORS was properly configured in AWS API Gateway 返回。

    我将问题追溯到 XHR 查询参数中使用的未编码大括号:

    where=[{"field": "client_id", "op": "eq", "value": 1}]
    

    对这些字符进行 URL 编码修复了 400 Bad Request。呸!

    【讨论】:

      【解决方案2】:

      显然,“HTTP 代理”设置导致了这种情况。我没有这样做,而是在集成步骤中手动映射了每个请求查询参数。通过取消选中 HTTP 代理并执行此手动映射,每个请求都可以正确代理而不会出现问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-13
        • 2021-09-25
        • 1970-01-01
        • 2021-05-18
        • 2022-01-04
        • 2020-11-13
        • 2011-06-18
        • 2017-02-13
        相关资源
        最近更新 更多