“request.referer == nil”是否始终意味着直接流量?

时间:2014-01-04 09:55:06

标签: ruby-on-rails ruby ruby-on-rails-4 httprequest http-referer

request.referer没有返回任何内容时,这是否始终意味着访问者没有通过链接执行请求 - 即她以某种方式手动输入所请求页面的地址?

或者还有其他情况request.referer返回nil(授予请求成功)吗?

2 个答案:

答案 0 :(得分:8)

简短回答:不。

一般来说,引用者 - 与所有其他HTTP头一样 - 是用户提交的数据。用户提交的数据不应该被信任。

在我的脑海中,我可以想到这些场景,如果没有用户手动输入网址,就不会设置引荐来源。

可能还有其他情况(fx我不确定浏览器在新窗口中打开链接时如何处理引用)。

然后有一些情况是设置了引荐来源,但没有用户输入该地址;特别是机器人 - 特别是推荐人 - 垃圾邮件的人。

答案 1 :(得分:-2)

我尚未对此进行验证,但是不要检查nil是否为空值,而是使用blank?

request.referrer.blank?

这确保了它为零或空白字符串的情况。