File tree Expand file tree Collapse file tree 2 files changed +18
-6
lines changed
actionpack/lib/action_dispatch/http Expand file tree Collapse file tree 2 files changed +18
-6
lines changed Original file line number Diff line number Diff line change @@ -68,12 +68,17 @@ def parameter_filter_for(filters) # :doc:
68
68
ActiveSupport ::ParameterFilter . new ( filters )
69
69
end
70
70
71
- KV_RE = "[^&;=]+"
72
- PAIR_RE = %r{(#{ KV_RE } )=(#{ KV_RE } )}
73
71
def filtered_query_string # :doc:
74
- query_string . gsub ( PAIR_RE ) do |_ |
75
- parameter_filter . filter ( $1 => $2) . first . join ( "=" )
72
+ parts = query_string . split ( /([&;])/ )
73
+ filtered_parts = parts . map do |part |
74
+ if part . include? ( "=" )
75
+ key , value = part . split ( "=" , 2 )
76
+ parameter_filter . filter ( key => value ) . first . join ( "=" )
77
+ else
78
+ part
79
+ end
76
80
end
81
+ filtered_parts . join ( "" )
77
82
end
78
83
end
79
84
end
Original file line number Diff line number Diff line change @@ -37,9 +37,16 @@ def location_filter_match?
37
37
def parameter_filtered_location
38
38
uri = URI . parse ( location )
39
39
unless uri . query . nil? || uri . query . empty?
40
- uri . query . gsub! ( FilterParameters ::PAIR_RE ) do
41
- request . parameter_filter . filter ( $1 => $2) . first . join ( "=" )
40
+ parts = uri . query . split ( /([&;])/ )
41
+ filtered_parts = parts . map do |part |
42
+ if part . include? ( "=" )
43
+ key , value = part . split ( "=" , 2 )
44
+ request . parameter_filter . filter ( key => value ) . first . join ( "=" )
45
+ else
46
+ part
47
+ end
42
48
end
49
+ uri . query = filtered_parts . join ( "" )
43
50
end
44
51
uri . to_s
45
52
rescue URI ::Error
You can’t perform that action at this time.
0 commit comments