【发布时间】:2014-01-04 09:55:06
【问题描述】:
当request.referer 没有返回任何内容时,这是否总是意味着访问者没有通过链接进行请求 - 即她以某种方式手动输入了请求页面的地址?
或者还有其他情况request.referer返回nil(假设请求成功)?
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-4 httprequest http-referer
当request.referer 没有返回任何内容时,这是否总是意味着访问者没有通过链接进行请求 - 即她以某种方式手动输入了请求页面的地址?
或者还有其他情况request.referer返回nil(假设请求成功)?
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-4 httprequest http-referer
简短回答:不。
一般来说,引荐来源网址 - 与所有其他 HTTP 标头一样 - 是用户提交的数据。不应信任用户提交的数据。
我突然想到了这些场景,如果没有用户手动输入 URL,就不会设置引荐来源网址。
可能还有其他情况(我不确定浏览器在新窗口中打开链接时如何处理引荐来源网址)。
还有设置了referrer,但没有用户输入地址的情况;尤其是机器人 - 尤其是引荐垃圾邮件。
【讨论】:
我尚未验证,但不检查 nil 的空白值而是使用 blank? 总是安全的
request.referrer.blank?
这确保它是 nil 或空白字符串时的大小写。
【讨论】: