1

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

  • 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". 然而,事实证明这对我来说很困难。我最接近的是这个答案。我已经按照这些步骤更新了我的 API 网关配置,但是当Accept标头以"image/avif". 而且我还没有找到任何专门提到这个问题的帖子。

4

1 回答 1

0

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

于 2021-09-28T13:12:42.743 回答