当request.referer
没有返回任何内容时,这是否始终意味着访问者没有通过链接执行请求 - 即她以某种方式手动输入所请求页面的地址?
或者还有其他情况request.referer
返回nil
(授予请求成功)吗?
答案 0 :(得分:8)
简短回答:不。
一般来说,引用者 - 与所有其他HTTP头一样 - 是用户提交的数据。用户提交的数据不应该被信任。
在我的脑海中,我可以想到这些场景,如果没有用户手动输入网址,就不会设置引荐来源。
可能还有其他情况(fx我不确定浏览器在新窗口中打开链接时如何处理引用)。
然后有一些情况是设置了引荐来源,但没有用户输入该地址;特别是机器人 - 特别是推荐人 - 垃圾邮件的人。
答案 1 :(得分:-2)
我尚未对此进行验证,但是不要检查nil
是否为空值,而是使用blank?
request.referrer.blank?
这确保了它为零或空白字符串的情况。