Js-core: プラスサインインS3キーは404を引き起こします

作成日 2019年12月16日  ·  3コメント  ·  ソース: imgix/js-core

キーに'+'を含む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はそれらをスペースとして解釈します。

最も参考になるコメント

こんにちは@sherwinski

ありがとう! それは簡単な修正でもあります、私は昨日思いついた:)

よりエレガントな解決策を見つけるために何かお手伝いできることがあれば、私に知らせてください。

全てのコメント3件

ねえ@rschweizer
これを持ってきてくれてありがとう。 残念ながら、 +をエンコードすると、S3ソースを使用しないセットアップが破損するリスクがあるため、これに対する簡単な解決策はありません。 今のところ、最も簡単な解決策は、URLを生成した後に+を個別にエンコードすることです。

client.buildURL(path, params).replace(/\+/g, '%2B')

私はそれが満足のいく答えではないことを知っていますが、私たちは現在これに対するより良い解決策を調査していることを知っています。 他にご不明な点がございましたら、お気軽にコメントしてください。 ありがとう

こんにちは@sherwinski

ありがとう! それは簡単な修正でもあります、私は昨日思いついた:)

よりエレガントな解決策を見つけるために何かお手伝いできることがあれば、私に知らせてください。

@rschweizer hey:wave:この問題を開いて、私たちの注意を引いてくれてありがとう。 あなたと@sherwinskiが同様の解決策を見つけてくれてうれしいです:)

将来的には、エッジケースの処理だけでなく、エンコードを実行する方法/タイミング/実行すべきでないことについて、すでに真剣に考えています。 この問題を追跡する内部ドキュメントを作成しましたが、すでにmore elegant solution取り組んでいます。

とりあえずこれを締めくくりますが、質問、コメント、懸念がある場合は、もう一度コメント/プル/オープンしてください。

このページは役に立ちましたか?
0 / 5 - 0 評価