CloudFront使用時に, GETパラメータをいろいろくっつけたURIにリダイレクトすると想定しているパラメータじゃない値がくっついていて困りました.
しかもこれマニュアルに載ってなくない!? ということでさらに困っています.
何が起きているのか
CloudFrontはオリジンからのレスポンスヘッダのLocation値をURLエンコード(パーセントエンコード)を行った値で上書きしてからクライアントにレスポンスを返しているようです.
CloudFrontを通さずアクセスした場合
WebサーバでURLエンコードしてあるので hoge=%E3%81%82
が末尾に付いたURLがLocationヘッダーに設定されています.
ちなみに%E3%81%82
はあ
です.
CloudFrontを通してアクセスした場合
%
がエンコードされて%25
になっています.
もちろん%25E3%2581%2582
はデコードしてもあ
にならないので困ります.
マニュアルに載ってない!?
AWSのマニュアルCloudFront が削除または更新する HTTP レスポンスヘッダーには, 「Locationヘッダーを書き換えるよ」という話は載ってません.
載ってないということは対処法もわからないので困っています.
「エンコード必要な文字が含まれてるURLにリダイレクトするなバカ」「Webサーバがエンコードしなければいいだけの話だろタコ」等の話はもっともですが, めんどくさいからCloudFrontがLocationヘッダーをエンコードしないようにする方法無いかなあというのが正直なところです.