【问题标题】:AWS APIG Lambda Proxy Custom HeadersAWS APIG Lambda 代理自定义标头
【发布时间】:2018-07-27 17:21:05
【问题描述】:

我对无服务器相当陌生,因此我对 AWS Lambda 的体验仅限于过去几个月。到目前为止,我喜欢它。我现在唯一的问题是我似乎无法通过 API Gateway 上的 Lambda 代理集成发送自定义标头。当我的功能代码到达时,我的“授权”标题是完整的。不幸的是,我无法检索“Content-Type”标头或我可能添加的任何自定义标头。到目前为止,我已经能够在不需要它们的情况下逃脱,但我正在处理多部分/表单数据请求,并且需要 Content-Type 标头的良好边界。更奇怪的是,当我使用 Postman 发出请求时,一切都是金色的。在其他任何地方,标题都不见了。如果有人知道为什么这个超级奇怪的事情会毁了我的日日夜夜,我将不胜感激。谢谢!

【问题讨论】:

  • 可能发现它已移至x-amzn-Remapped-Content-Type 下。检查那个?最简单的测试当然是编写一个 Lambda 函数,将其输入(字符串化)作为响应正文返回。

标签: amazon-web-services lambda http-headers aws-api-gateway content-type


【解决方案1】:

我最终通过遵循迈克尔 (https://stackoverflow.com/users/1695906/michael-sqlbot) 的建议找到了答案,这对我来说应该是显而易见的。只需返回整个输入并检查我得到的标题。我发现“Content-Type”被更改为“content-type”并且区分大小写导致了问题。我仍然不确定邮递员请求如何能够在没有其他请求但现在可以使用的情况下保留大写约定。

【讨论】:

  • 邮递员会知道标题不区分大小写,并且会知道如何处理它。但是编程语言(至少是用于 AWS Lambda 的语言)只会看到带有 content-type 键的对象或字典。
  • 我也遇到了这个问题,除了我根本没有收到 Content-Type 标头,即使是小写字母也不行。正在接收任何其他自定义标头,但不是 Content-Type
  • @ffleandro 只是预感,因为我对您的系统一无所知,但您是否尝试通过邮递员向您的 lambda 运行 multipart/form-data 请求?我发现当我这样做时,邮递员在第一个请求中包含 Content-Type 标头,但后续请求不发送内容类型。我不知道为什么。无论如何,如果您删除表单值并将它们放回原处,邮递员会重新设置 Content-Type。
  • 不,我正在使用 curl 命令手动调用 api 并将标头设置为 application/x-www-form-urlencoded
猜你喜欢
  • 2020-09-12
  • 1970-01-01
  • 2015-04-17
  • 2020-09-15
  • 1970-01-01
  • 2021-01-09
  • 2018-09-25
  • 1970-01-01
  • 2017-04-15
相关资源
最近更新 更多