"request.referer == nil"总是意味着直接流量吗?



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

或者是否有其他情况request.referer返回nil(假设请求成功)?

简短回答:不。

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

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

  • 单击电子邮件客户端中的链接。
  • 使用删除引荐来源的隐私软件。
  • 机器人/蜘蛛可能不会设置此标头。
  • 跟踪从 HTTPS 站点到 HTTP 站点的链接。

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

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

我还没有验证过,但始终安全的不是检查nil的空白值,而是使用blank?

request.referrer.blank?

这确保了当它是 nil 或空白字符串时的情况。

最新更新