【问题标题】:configure aws lambda and api gateway to return binary data for image/avif content-type配置 aws lambda 和 api 网关以返回 image/avif 内容类型的二进制数据
【发布时间】:2021-11-20 12:07:52
【问题描述】:

关于使用 aws lambda 和 api 网关的二进制数据的问题和博客文章不乏其人,但令人惊讶的是,我一直无法找到与 AVIF 图像相关的任何内容。这很重要,因为铬中有this issue。本质上,chrome 团队最近将"image/avif" 添加到其图像的Accept 标头的开头,这导致我的端点返回图像的base64 字符串而不是二进制数据。如果我使用 curl 重复相同的请求并从 Accept 标头中删除 "image/avif",我会得到二进制数据。具体来说:

  • accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 产生二进制数据
  • accept: image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8 产生 base64 数据(并且图像在网页中损坏)
  • accept: image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8 产生二进制数据

从 chromium 线程中的讨论看来,解决方案似乎是更新我的端点以在 Accept 标头以 "image/avif" 开头时使用适当的二进制数据进行响应。然而,事实证明这对我来说很困难。我最接近的是this answer。我已经按照这些步骤更新了我的 API 网关配置,但是当 Accept 标头以 "image/avif" 开头时,我仍然获得 base64 数据。而且我还没有找到任何专门提到这个问题的帖子。

【问题讨论】:

    标签: amazon-web-services aws-lambda aws-api-gateway amazon-cloudfront avif


    【解决方案1】:

    事实证明,我在帖子中链接的指南包含所有必要步骤,但 API Gateway 仪表板中的“保存更改”按钮实际上并未部署您的更改。您必须转到 Resources > Actions > Deploy API 才能使更改生效。

    【讨论】:

      猜你喜欢
      • 2019-02-08
      • 2018-06-16
      • 2018-04-23
      • 1970-01-01
      • 1970-01-01
      • 2020-04-24
      • 2021-07-29
      • 2020-01-18
      • 1970-01-01
      相关资源
      最近更新 更多