如何避免通过重新映射无服务器框架从 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 包中
AWS Lambda 上的 Nestjs(无服务器框架)|如何访问事件参数?
如何在 serverless.yml 中配置 eventbridge 规则(使用无服务器框架)以在特定时间调用 lambda