aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_controller
diff options
context:
space:
mode:
Diffstat (limited to 'actionpack/lib/action_controller')
-rw-r--r--actionpack/lib/action_controller/cgi_process.rb6
-rwxr-xr-xactionpack/lib/action_controller/request.rb12
2 files changed, 15 insertions, 3 deletions
diff --git a/actionpack/lib/action_controller/cgi_process.rb b/actionpack/lib/action_controller/cgi_process.rb
index 4e3a1d270c..fb46c6d353 100644
--- a/actionpack/lib/action_controller/cgi_process.rb
+++ b/actionpack/lib/action_controller/cgi_process.rb
@@ -48,7 +48,11 @@ module ActionController #:nodoc:
def query_string
return @cgi.query_string unless @cgi.query_string.nil? || @cgi.query_string.empty?
- parts = env['REQUEST_URI'].split('?')
+ unless env['REQUEST_URI'].nil?
+ parts = env['REQUEST_URI'].split('?')
+ else
+ return env['QUERY_STRING'] || ''
+ end
parts.shift
return parts.join('?')
end
diff --git a/actionpack/lib/action_controller/request.rb b/actionpack/lib/action_controller/request.rb
index 032b19d6eb..f16a109cc7 100755
--- a/actionpack/lib/action_controller/request.rb
+++ b/actionpack/lib/action_controller/request.rb
@@ -74,8 +74,16 @@ module ActionController
end
def request_uri
- (%r{^\w+\://[^/]+(/.*|$)$} =~ env['REQUEST_URI']) ? $1 : env['REQUEST_URI'] # Remove domain, which webrick puts into the request_uri.
- end
+ unless env['REQUEST_URI'].nil?
+ (%r{^\w+\://[^/]+(/.*|$)$} =~ env['REQUEST_URI']) ? $1 : env['REQUEST_URI'] # Remove domain, which webrick puts into the request_uri.
+ else # REQUEST_URI is blank under IIS - get this from PATH_INFO and SCRIPT_NAME
+ script_filename = env["SCRIPT_NAME"].to_s.match(%r{[^/]+$})
+ request_uri = env["PATH_INFO"]
+ request_uri.sub!(/#{script_filename}\//, '') unless script_filename.nil?
+ request_uri += '?' + env["QUERY_STRING"] unless env["QUERY_STRING"].nil? || env["QUERY_STRING"].empty?
+ return request_uri
+ end
+ end
def protocol
env["HTTPS"] == "on" ? 'https://' : 'http://'