不乏有关使用 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"
. 而且我还没有找到任何专门提到这个问题的帖子。