Make sure we always read the body of a PUT or POST request
Unfortunately if a PUT or POST request that has a body fails to read it then Apache will sometimes fail to return the response it is given to the client properly, instead erroring: https://issues.apache.org/bugzilla/show_bug.cgi?id=44782 To work round this we call rewind on the body for every request using a filter, which forces it to be fetched from Apache into a file.
This commit is contained in:
parent
3ef02b86f0
commit
c2c2535b73
1 changed files with 16 additions and 1 deletions
|
@ -3,6 +3,8 @@ class ApplicationController < ActionController::Base
|
|||
|
||||
protect_from_forgery
|
||||
|
||||
before_filter :fetch_body
|
||||
|
||||
if STATUS == :database_readonly or STATUS == :database_offline
|
||||
def self.cache_sweeper(*sweepers)
|
||||
end
|
||||
|
@ -405,6 +407,19 @@ class ApplicationController < ActionController::Base
|
|||
end
|
||||
end
|
||||
|
||||
##
|
||||
# Unfortunately if a PUT or POST request that has a body fails to
|
||||
# read it then Apache will sometimes fail to return the response it
|
||||
# is given to the client properly, instead erroring:
|
||||
#
|
||||
# https://issues.apache.org/bugzilla/show_bug.cgi?id=44782
|
||||
#
|
||||
# To work round this we call rewind on the body here, which is added
|
||||
# as a filter, to force it to be fetched from Apache into a file.
|
||||
def fetch_body
|
||||
request.body.rewind
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
# extract authorisation credentials from headers, returns user = nil if none
|
||||
|
|
Loading…
Add table
Reference in a new issue