前提
Rails 5.1.7
Ruby 2.6.6
疑問
アプリから GET で渡されたquery_parameterはControllerでparamとして取得すると既にUri_decodeされていますが、
一度redirect_to を経て同じ処理に同じparamを渡した場合はUri_decodeされません。
RailsのGitHubも読みましたが難解で、原因がわからなかったのでご存知の方にお知恵をお借りできればと思います。
該当のソースコード
ruby
1## Routes 2controller :hoge do 3 get '/hoge/huga', :to => 'hoge#huga', trailing_slash: true 4 get '/hoge/redirect_huga', :to => 'hoge#redirect_huga', trailing_slash: true 5end
ruby
1## Controller 2class HogeController < ApplicationController 3 4 def redirect_huga 5 encoded_params = { param_1: URI.encode_www_form_component(params[:param_1]) } 6 redirect_to hoge_huga_path + '?' + encoded_params.to_param 7 end 8 9 def huga 10 Rails.logger.info "params_1 #{params[:params_1]}" 11 end 12end
decodeされるリクエスト
GET
https://test.dev/hoge/fuga/?param_1=https%3A%2F%2Ftest.jp%2Ftest%2F
// INFO -- : params_1 https://test.jp/test/
decodeされないリクエスト
GET
https://test.dev/hoge/redirect_huga/?param_1=https%3A%2F%2Ftest.jp%2Ftest%2F
## INFO -- : params_1 https%3A%2F%2Ftest.jp%2Ftest%2Ftest%2F
質問が初めてなので不足がありましたらすみません。 できるだけ早く補足させていただきます。 何卒よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/24 08:06 編集