Ruby on Rails - request.env['HTTP_REFERER'] returns nil

Naujpr picture Naujpr · Jun 23, 2010 · Viewed 11.5k times · Source

I am trying to save the http_referer so I can send the user back to that url after he has logged in. Right now I have a before_filter in my controllers that sends them to a log in page if a session has not been created via a redirect_to. However when I check the HTTP_REFERER it is nil (whereas 'REQUEST_URI' does return where Im originally coming from).

Thank you.

Answer

Awgy picture Awgy · Jun 23, 2010

HTTP_REFERER is an HTTP header set by the browser in the request containing the the address of the previous web page from which a link to the currently requested page was followed. It will not be set when directly navigating to a page.

REQUEST_URI (also available via request.request_uri())is the Uniform Resource Identifier used to access the Rails controller/action and should always be set.

Throw this debugging code into your view:

<ul>
<% request.env.each do |item| %>
    <li><%= item[0] %> : <%= item[1] %></li>
<% end %>
</ul>

If HTTP_REFERER is not set, make sure you are navigating to that page via a link or redirect and see if it is set then.

There is also a chance your browser is not setting the HTTP_REFERER header. Be sure you do not have an add-on affecting this. You can use a nifty Firefox add-on called Tamper Data to see the headers being sent.