# Saving HTTP Referer

**URL:** <https://www.ruby-forum.com/t/saving-http-referer/184464>\
**Category:** Rails\
**Created:** [March 3, 2010, 2:32am UTC](https://www.ruby-forum.com/t/saving-http-referer/184464 "2010-03-03T02:32:01Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![david](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/aeb1de/32.png) [@david](https://www.ruby-forum.com/u/david)\
**Post date:** [March 3, 2010, 2:32am UTC](https://www.ruby-forum.com/t/saving-http-referer/184464/1 "2010-03-03T02:32:01Z")

</div>

I’m trying to save the site that a user came from when they sign up.  
Right now I have a before\_filter in my ApplicationController:

before\_filter :save\_referer

def save\_referer  
unless is\_logged\_in?  
session[‘referer’] = request.env[“HTTP\_REFERER”] unless  
session[‘referer’]  
end  
end

def create  
@user = User.new(params[:user])  
if @user.save\_with(session[:referer]) … end

User def save\_with(referer) self.referer = referer unless referer ==  
“null” self.save  
end

Then when a user is created, it checks this session variable and sets  
it to nil. This is buggy as it only works sometimes and I cannot seem  
to figure out why. Any ideas what could be going on?

---

<div class="post-metadata">

**Author:** ![david](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/aeb1de/32.png) [@david](https://www.ruby-forum.com/u/david)\
**Post date:** [March 3, 2010, 2:55am UTC](https://www.ruby-forum.com/t/saving-http-referer/184464/2 "2010-03-03T02:55:26Z")

</div>

On Tue, Mar 2, 2010 at 5:30 PM, David [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> I’m trying to save the site that a user came from when they sign up.  
> Right now I have a before\_filter in my ApplicationController:

> ```
> session['referer'] = request.env["HTTP_REFERER"] unless
> 
> ```
> 
> session[‘referer’]

> Then when a user is created, it checks this session variable and sets  
> it to nil. This is buggy as it only works sometimes and I cannot seem  
> to figure out why. Any ideas what could be going on?

Because HTTP\_REFERER is _not_ a required header, and in fact  
some security software blocks it for privacy reasons.

So you just can’t count on it being available.

–  
Hassan S. ------------------------ removed\_email\_address@domain.invalid  
twitter: @hassan

---

<div class="post-metadata">

**Author:** ![david](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/aeb1de/32.png) [@david](https://www.ruby-forum.com/u/david)\
**Post date:** [March 3, 2010, 3:44am UTC](https://www.ruby-forum.com/t/saving-http-referer/184464/3 "2010-03-03T03:44:03Z")

</div>

Aha, is there any way to figure out where a user comes from every  
time?

On Mar 2, 5:53 pm, Hassan S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![david](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/aeb1de/32.png) [@david](https://www.ruby-forum.com/u/david)\
**Post date:** [March 3, 2010, 5:26am UTC](https://www.ruby-forum.com/t/saving-http-referer/184464/4 "2010-03-03T05:26:32Z")

</div>

On Tue, Mar 2, 2010 at 6:42 PM, David [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Aha, is there any way to figure out where a user comes from every  
> time?

Short answer: no

Longer and probably not better answer: if by “every time” you mean  
100% certainty, no _BUT_ you could spend an interesting amount of  
money approaching, on a very steep curve, that point.

Or so I’d think. But really, for the purposes of this discussion: no  
🙂

–  
Hassan S. ------------------------ removed\_email\_address@domain.invalid  
twitter: @hassan

---

<div class="post-metadata">

**Author:** ![david](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/aeb1de/32.png) [@david](https://www.ruby-forum.com/u/david)\
**Post date:** [March 3, 2010, 10:13pm UTC](https://www.ruby-forum.com/t/saving-http-referer/184464/5 "2010-03-03T22:13:54Z")

</div>

install google analytics… It has this functionality, and without  
spending days/weeks/months on this problem, chances are they’ll do it  
better.
