Changeset 5895
- Timestamp:
- 01/12/07 07:01:39 (2 years ago)
- Files:
-
- trunk/actionpack/lib/action_controller/request.rb (modified) (2 diffs)
- trunk/actionpack/test/controller/request_test.rb (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/actionpack/lib/action_controller/request.rb
r5698 r5895 146 146 end 147 147 148 # Return s the request URI correctly, taking into account the idiosyncracies149 # of the various servers.148 # Return the request URI, accounting for server idiosyncracies. 149 # WEBrick includes the full URL. IIS leaves REQUEST_URI blank. 150 150 def request_uri 151 151 if uri = @env['REQUEST_URI'] 152 (%r{^\w+\://[^/]+(/.*|$)$} =~ uri) ? $1 : uri # Remove domain, which webrick puts into the request_uri. 153 else # REQUEST_URI is blank under IIS - get this from PATH_INFO and SCRIPT_NAME 152 # Remove domain, which webrick puts into the request_uri. 153 (%r{^\w+\://[^/]+(/.*|$)$} =~ uri) ? $1 : uri 154 else 155 # Construct IIS missing REQUEST_URI from SCRIPT_NAME and PATH_INFO. 154 156 script_filename = @env['SCRIPT_NAME'].to_s.match(%r{[^/]+$}) 155 157 uri = @env['PATH_INFO'] … … 158 160 uri << '?' << env_qs 159 161 end 160 uri162 @env['REQUEST_URI'] = uri 161 163 end 162 164 end trunk/actionpack/test/controller/request_test.rb
r5664 r5895 175 175 assert_equal "/path/of/some/uri", @request.path 176 176 177 @request.set_REQUEST_URI nil 177 178 @request.relative_url_root = nil 178 179 @request.env['PATH_INFO'] = "/path/of/some/uri?mapped=1" … … 181 182 assert_equal "/of/some/uri", @request.path 182 183 184 @request.set_REQUEST_URI nil 183 185 @request.relative_url_root = nil 184 186 @request.env['PATH_INFO'] = "/path/of/some/uri" … … 187 189 assert_equal "/path/of/some/uri", @request.path 188 190 191 @request.set_REQUEST_URI nil 189 192 @request.relative_url_root = nil 190 193 @request.env['PATH_INFO'] = "/" … … 192 195 assert_equal "/", @request.path 193 196 197 @request.set_REQUEST_URI nil 194 198 @request.relative_url_root = nil 195 199 @request.env['PATH_INFO'] = "/?m=b" 196 200 assert_equal "/?m=b", @request.request_uri 197 201 assert_equal "/", @request.path 198 202 203 @request.set_REQUEST_URI nil 199 204 @request.relative_url_root = nil 200 205 @request.env['PATH_INFO'] = "/" 201 206 @request.env['SCRIPT_NAME'] = "/dispatch.cgi" 202 207 assert_equal "/", @request.request_uri 203 assert_equal "/", @request.path 204 208 assert_equal "/", @request.path 209 210 @request.set_REQUEST_URI nil 205 211 @request.relative_url_root = nil 206 212 @request.env['PATH_INFO'] = "/hieraki/" 207 213 @request.env['SCRIPT_NAME'] = "/hieraki/dispatch.cgi" 208 214 assert_equal "/hieraki/", @request.request_uri 209 assert_equal "/", @request.path 210 215 assert_equal "/", @request.path 216 211 217 @request.set_REQUEST_URI '/hieraki/dispatch.cgi' 212 218 @request.relative_url_root = '/hieraki' 213 assert_equal "/dispatch.cgi", @request.path 219 assert_equal "/dispatch.cgi", @request.path 214 220 @request.relative_url_root = nil 215 221 216 222 @request.set_REQUEST_URI '/hieraki/dispatch.cgi' 217 223 @request.relative_url_root = '/foo' 218 assert_equal "/hieraki/dispatch.cgi", @request.path 224 assert_equal "/hieraki/dispatch.cgi", @request.path 219 225 @request.relative_url_root = nil 220 226 … … 227 233 assert_equal "/some/path", @request.path 228 234 end 229 235 230 236 231 237 def test_host_with_port