Use the referer of the last request when redirecting
This commit is contained in:
parent
21977817bf
commit
bf1637eb6d
|
@ -114,7 +114,11 @@ protected
|
|||
def env
|
||||
env = {}
|
||||
begin
|
||||
env["HTTP_REFERER"] = last_request.url
|
||||
if last_response.redirect?
|
||||
env["HTTP_REFERER"] = last_request.env["HTTP_REFERER"]
|
||||
else
|
||||
env["HTTP_REFERER"] = last_request.url
|
||||
end
|
||||
rescue Rack::Test::Error
|
||||
# no request yet
|
||||
end
|
||||
|
@ -122,4 +126,5 @@ protected
|
|||
env
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
|
|
@ -22,6 +22,18 @@ class TestApp < Sinatra::Base
|
|||
redirect '/landed'
|
||||
end
|
||||
|
||||
get '/referer_base' do
|
||||
'Referer base <a href="redirect_and_keep_referer">Link that will redirect</a>'
|
||||
end
|
||||
|
||||
get '/redirect_and_keep_referer' do
|
||||
redirect '/check_referer'
|
||||
end
|
||||
|
||||
get '/check_referer' do
|
||||
'Check referer'
|
||||
end
|
||||
|
||||
get '/host' do
|
||||
"Current host is #{request.scheme}://#{request.host}:#{request.port}"
|
||||
end
|
||||
|
|
|
@ -86,4 +86,14 @@ describe Capybara::RackTest::Driver do
|
|||
@driver.body.should include('foobar')
|
||||
end
|
||||
end
|
||||
|
||||
describe "keeping referer on redirect" do
|
||||
it "should not update HTTP_REFERER on redirects" do
|
||||
@driver.visit('/referer_base')
|
||||
@driver.visit('/redirect_and_keep_referer')
|
||||
@driver.body.should include('Check referer')
|
||||
@driver.request.referer.should =~ /referer_base/
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue