【问题标题】:AWS API Gateway integration request body mapping templateAWS API Gateway 集成请求正文映射模板
【发布时间】:2018-01-20 10:53:00
【问题描述】:

我在 Web 应用程序中使用 AWS API 和 Cognito 安全身份验证。当我在不覆盖集成请求正文映射模板的情况下调用我的 api 时,它工作正常。但是当我在集成请求正文映射模板中放入以下几行时 如下所示

    #set($inputRoot = $input.path('$'))
{
 'UserId' :'$context.authorizer.claims.email',
 'Name' :'$context.authorizer.claims.name',
 'UniqueID' :'$context.authorizer.claims.sub'
}

…它给了我以下错误:

XMLHttpRequest 无法加载 https://ei25XXXXXXg.execute-api.us-east-2.amazonaws.com/Development/userlogin/getcurrentuser。 请求中不存在“Access-Control-Allow-Origin”标头 资源。因此不允许使用原点“http://localhost:7080” 使用权。响应的 HTTP 状态代码为 400。

但我已经将“Access-Control-Allow-Origin”启用为“*”。有人知道吗..?

【问题讨论】:

    标签: api amazon-web-services cors aws-lambda aws-cognito


    【解决方案1】:

    问题中引用的消息中的“响应的 HTTP 状态代码为 400” 表明服务器认为请求有问题并拒绝按预期响应。

    所以你可能想要:

    • 仔细检查请求以确保您没有犯任何语法错误或其他任何错误
    • 测试来自其他一些非浏览器客户端/工具(例如 curl 或 postman)的相同请求
    • 在服务器端检查您的服务器日志,以查看服务器正在记录哪些消息以指示请求有什么问题

    您在浏览器控制台中收到一条消息说“请求的资源上不存在'Access-Control-Allow-Origin'标头”这一事实只是偶然的——真正的问题是你一开始没有得到 200 OK 响应,而是得到了 400。

    问题是,大多数服务器,即使配置为在响应中发送正确的 CORS 标头,通常也只为 success 响应发送这些标头,而不是为诸如 400 之类的错误响应发送这些标头。

    【讨论】:

    • 在我将 json 字符串与上下文一起放置后,它会给我带来错误。没有它,它工作正常。我上面提到的那个json请求有什么问题吗?
    • 您是否使用Content-Type: application/json 请求标头发送它?
    猜你喜欢
    • 2016-01-21
    • 1970-01-01
    • 2017-11-30
    • 2021-04-20
    • 2018-01-25
    • 2018-05-02
    • 2020-09-28
    • 2019-08-11
    • 2016-06-28
    相关资源
    最近更新 更多