从AWS Lambda发送PDF至Postman无法加载问题求助
AWS Lambda返回PDF在Postman无法加载的问题排查与解决
可能的原因
- API Gateway二进制媒体类型配置未生效:虽然添加了
application/pdf,但未重新部署API,或者配置存在拼写、优先级问题,导致API Gateway仍将响应按文本处理。 - HTTP响应头大小写不兼容:Lambda返回的
Content-type、content-disposition采用小写格式,部分服务(包括Postman)对HTTP头字段大小写敏感,无法正确识别类型。 - Postman本地缓存或视图设置问题:Postman缓存了旧的响应配置,或者默认视图未切换到PDF渲染模式,导致直接显示Base64文本。
- API Gateway集成响应配置缺失:若使用API Gateway代理Lambda,集成响应未正确映射二进制响应头,导致响应被篡改。
解决办法
完善API Gateway二进制配置并重新部署
- 在API Gateway控制台的「设置」-「二进制媒体类型」中,确认
application/pdf已添加,无拼写错误。 - 保存配置后,务必重新部署API到对应阶段,否则配置不会生效。
- 在API Gateway控制台的「设置」-「二进制媒体类型」中,确认
修正Lambda响应头的大小写格式
将响应头字段改为标准HTTP驼峰格式,避免识别失败:let response = { statusCode: 200, headers: { 'Content-Type': 'application/pdf', 'Content-Disposition': 'attachment; filename=test.pdf' }, body: pdf.toString('base64'), isBase64Encoded: true }; console.log(response) return response;重置Postman的响应视图与缓存
- 在Postman响应面板,切换到「原始」视图后再切回「预览」,或直接选择「渲染PDF」选项(若存在)。
- 进入Postman设置,找到「清除缓存」功能,清除本地缓存后重启Postman,避免旧配置干扰。
检查API Gateway集成响应配置
- 进入对应API的方法配置,在「集成响应」中,确认200状态码的响应头映射未覆盖
Content-Type和Content-Disposition。 - 若使用代理集成,确保代理设置允许传递所有响应头,未对二进制内容进行额外转换。
- 进入对应API的方法配置,在「集成响应」中,确认200状态码的响应头映射未覆盖
隔离测试定位问题
直接通过Lambda控制台测试函数,查看返回的响应结构是否正确;再对比API Gateway转发后的响应,确认问题出在Lambda还是API Gateway环节。
内容的提问来源于stack exchange,提问作者Nisarg jadhav
相关产品推荐
相关产品推荐

