如何避免通过重新映射无服务器框架从 Lambda 传递回 API 网关的标头?

Posted

技术标签:

【中文标题】如何避免通过重新映射无服务器框架从 Lambda 传递回 API 网关的标头?【英文标题】:How to avoid headers passed back to API Gateway from Lambda via Serverless framework being remapped? 【发布时间】:2018-09-29 12:41:45 【问题描述】:

当我尝试使用 WWW-Authenticate 质询标头在 Serverless Lambda 函数中响应时遇到问题。

我在回复中设置


    statusCode: 401,
    headers: 
        'WWW-Authenticate': 'Basic realm="My realm"',
    ,
    body: "",

该函数成功运行,但在响应中我没有WWW-Authenticate 标头;相反,我有一个 x-amzn-Remapped-WWW-Authenticate 标头。

如何让这个标头逐字传递?

我看了the docs about passing custom response headers,但是好像这些都需要在serverless.yml中设置。由于这些响应标头需要根据请求标头动态变化,因此我认为这对我没有帮助。

函数是默认的lambda-proxy类型。

【问题讨论】:

有人愿意告诉我为什么这被否决了吗? 也许问题是您不需要知道为什么我想这样做?我已将其删除。也许这样更好。 我后来发现一些 AWS docs 说这个标题(以及其他)被重新映射,但它没有解释为什么或是否有解决方法。 【参考方案1】:

默认情况下,无服务器框架使用 Lambda 代理集成方法。这为您做了很多繁重的工作,但也会妨碍您。

如果您想要更透明的体验,您需要使用 Lambda 集成,并自己处理响应。尽管您需要更多地动手,包括 CORS 响应标头。

integration: lambda

您可以在此处阅读有关这两种方法的更多信息:https://serverless.com/framework/docs/providers/aws/events/apigateway/#lambda-integration

【讨论】:

我从您的最新评论中看到,此标头以独特的方式处理docs.aws.amazon.com/apigateway/latest/developerguide/… 有鉴于此,“lambda”集成是否仍然可行?

以上是关于如何避免通过重新映射无服务器框架从 Lambda 传递回 API 网关的标头?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 AWS Lambda 函数 + 无服务器框架的 URL 中删除阶段?

从 SSM 参数生成文件并包含在无服务器框架 lambda 包中

Lambda 集成与 Lambda 代理:优点和缺点

AWS Lambda 上的 Nestjs(无服务器框架)|如何访问事件参数?

如何在 serverless.yml 中配置 eventbridge 规则(使用无服务器框架)以在特定时间调用 lambda

如何在无服务器框架或 AWS lambda 中启用节点 js 的实验性功能