尝试为 S3 中的对象获取图像,其键中包含'+'
会导致 404。
例子:
GET https://<cname>.imgix.net/E+P-003_D.jpeg // -> 404
GET https://<cname>.imgix.net/E%2BP-003_D.jpeg // -> 200
我怀疑,这是由于https://github.com/imgix/imgix-core-js/blob/master/src/imgix-core-js.js#L106 中的encodeURI
。 由于 S3 密钥是一个路径,该模块使用encodeURI
,它接受'+'
符号并且不对它们进行编码。 然而,S3 将这些解释为空格。
嘿@rschweizer ,
感谢您提出这个问题。 不幸的是,没有一个简单的解决方案,因为对+
编码可能会破坏不使用 S3 源的设置。 目前最快的解决方案是在生成 URL 后单独编码+
:
client.buildURL(path, params).replace(/\+/g, '%2B')
我知道这不是一个令人满意的答案,但知道我们目前正在为此研究更好的解决方案。 如果您有任何其他问题,请随时发表评论。 谢谢
嗨@sherwinski ,
谢谢! 这也是快速修复,我昨天想出了:)
如果我能帮助找到更优雅的解决方案,请告诉我。
@rschweizer嘿 :wave: 感谢您打开这个问题并引起我们的注意。 我很高兴您和@sherwinski找到了类似的解决方案:)
展望未来,我们已经在更加努力地思考如何/何时应该/不应该进行编码以及处理边缘情况。 我已经创建了一个内部文件来跟踪这个问题,我们已经在处理more elegant solution
。
我现在将关闭它,但_请_如果您有任何问题、评论或疑虑,请随时再次评论/拉取/打开一个问题。
最有用的评论
嗨@sherwinski ,
谢谢! 这也是快速修复,我昨天想出了:)
如果我能帮助找到更优雅的解决方案,请告诉我。