This repository has been archived by the owner on Nov 19, 2021. It is now read-only.
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix following of absolute redirect URL in Sinatra
What's going on when the app redirects to an absolute URL? * Sinatra relies on Rack::MockSession which sets SERVER_NAME to "example.org" [1] on request it makes. However, Webrat expects it to be "www.example.com" * In MyClassyApp, the redirect URL is made out of Rack::Request#url [2] which uses SERVER_NAME, which is set to "example.org" by Rack::MockSession. As a result, Webrat see it as an external redirect and don't follow it. NOTE: * SERVER_NAME is stricly equivalent to HTTP_HOST [3] * This could have been fixed in Webrat::Session too. I'am not sure that it won't affect other frameworks so I left it intact. def request_page(url, http_method, data) #:nodoc: h = headers h['HTTP_REFERER'] = @current_url if @current_url + h['HTTP_HOST'] = 'www.example.com' [1] http://github.com/rack/rack/blob/5c00dd698edb953b4bee432fa12a20ba69a067c1/lib/rack/mock.rb#L79 [2] http://github.com/rack/rack/blob/5c00dd698edb953b4bee432fa12a20ba69a067c1/lib/rack/request.rb#L201 [3] http://github.com/rack/rack/blob/5c00dd698edb953b4bee432fa12a20ba69a067c1/lib/rack/request.rb#L72
- Loading branch information