http - 没有 Accept header 的 AWS API Gateway 二进制输出

标签 http amazon-web-services header binary aws-api-gateway

根据 http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-payload-encodings.html

如果未定义 contentHandling,并且如果响应的 Content-Type header 和原始请求的 Accept header 与 binaryMediaTypes 列表中的条目相匹配,API 网关将通过正文。当 Content-Type header 和 Accept header 相同时会发生这种情况;否则,API Gateway 将响应主体转换为 Accept header 中指定的类型。

我无法发出发送 Accept header 的原始请求。 如何让我的 AWS API Gateway 以二进制格式返回? (图片/jpeg)。因为我从 s3 发回的图像在最后阶段被转换为文本(因为原始请求缺少 Accept: image/jpeg header )。

最佳答案

将集成响应中的“内容处理”设置为“转换为二进制”。当在集成响应中设置 Convert to binary 时,Content-Type API Gateway 响应 header 为'*/*',因此您需要在 Content-Type 的集成响应中创建 header 映射,映射到 integration.response.header。内容类型。这将确保 API 网关响应包含后端在其对 API 网关的响应中传递的相同内容类型值。

为了清楚起见,这里是所需设置的摘要。

整合响应:

  • 内容处理:转换为二进制
  • header 映射:内容类型:integration.response.header.Content-Type

这样您的客户端就不再需要接受请求 header 了。

关于http - 没有 Accept header 的 AWS API Gateway 二进制输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41037026/

相关文章:

amazon-web-services - 续订 IAM SSL 服务器证书

amazon-web-services - 如何不为客户端使用代理配置

c - 编写一个简单的 C 预处理器

php - 如何修复PHP中的“ header 已发送”错误

json - 如何使用 express.js 传递 API url JSON http.get res.json(data)

ruby-on-rails - ping 网站的代码有时有效

http - 在网络请求之前执行函数

c# - 如何使用 HttpWebRequest 转义 POST 中的 URL 编码数据

mongodb - 无法连接到 EC2 上运行的 Mongodb

c - 我如何在我的源文件中调用一个函数,其中仅包含 c 中的头文件?