aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2004-12-07 10:50:26 +0000
committerDavid Heinemeier Hansson <david@loudthinking.com>2004-12-07 10:50:26 +0000
commit94921293dbdbdf7fe49023fe7ed8908e05d3615f (patch)
tree7c439e1557e9971ab2ea4b64799823be5791ae6c /actionpack
parent3e7d191e6450a3050976c735b0efc11b8a0aee93 (diff)
downloadrails-94921293dbdbdf7fe49023fe7ed8908e05d3615f.tar.gz
rails-94921293dbdbdf7fe49023fe7ed8908e05d3615f.tar.bz2
rails-94921293dbdbdf7fe49023fe7ed8908e05d3615f.zip
Added indifference to whether @headers["Content-Type"], @headers["Content-type"], or @headers["content-type"] is used. Added proper handling of HEAD requests, so that content isnt returned (Request#head? added as well) #277 [Eric Hodel]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@57 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'actionpack')
-rw-r--r--actionpack/CHANGELOG6
-rw-r--r--actionpack/lib/action_controller/cgi_process.rb13
-rwxr-xr-xactionpack/lib/action_controller/request.rb4
3 files changed, 18 insertions, 5 deletions
diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG
index 6632cdeff1..4d39e25d53 100644
--- a/actionpack/CHANGELOG
+++ b/actionpack/CHANGELOG
@@ -1,7 +1,11 @@
*SVN*
+* Added proper handling of HEAD requests, so that content isn't returned (Request#head? added as well) #277 [Eric Hodel]
+
+* Added indifference to whether @headers["Content-Type"], @headers["Content-type"], or @headers["content-type"] is used.
+
* Added TestSession#session_id that returns an empty string to make it easier to functional test applications that doesn't use
- cookie-based sessions [jcf]
+ cookie-based sessions #275 [jcf]
* Fixed that cached template loading would still check the file system to see if the file existed #258 [Andreas Schwarz]
diff --git a/actionpack/lib/action_controller/cgi_process.rb b/actionpack/lib/action_controller/cgi_process.rb
index 8610f60854..abc743246f 100644
--- a/actionpack/lib/action_controller/cgi_process.rb
+++ b/actionpack/lib/action_controller/cgi_process.rb
@@ -107,7 +107,10 @@ module ActionController #:nodoc:
$stdout.binmode if $stdout.respond_to?(:binmode)
$stdout.sync = false
print @cgi.header(@headers)
- if @body.respond_to?(:call)
+
+ if @cgi.head?
+ return
+ elsif @body.respond_to?(:call)
@body.call(self)
else
print @body
@@ -116,9 +119,11 @@ module ActionController #:nodoc:
private
def convert_content_type!(headers)
- if headers["Content-Type"]
- headers["type"] = headers["Content-Type"]
- headers.delete "Content-Type"
+ %w( Content-Type Content-type content-type ).each do |ct|
+ if headers[ct]
+ headers["type"] = headers[ct]
+ headers.delete(ct)
+ end
end
end
end
diff --git a/actionpack/lib/action_controller/request.rb b/actionpack/lib/action_controller/request.rb
index d58cf58543..9eb0b04ef0 100755
--- a/actionpack/lib/action_controller/request.rb
+++ b/actionpack/lib/action_controller/request.rb
@@ -26,6 +26,10 @@ module ActionController
method == :delete
end
+ def head?
+ method == :head
+ end
+
# Determine originating IP address. REMOTE_ADDR is the standard
# but will fail if the user is behind a proxy. HTTP_CLIENT_IP and/or
# HTTP_X_FORWARDED_FOR are set by proxies so check for these before