当页面为HTTPS时,URLReferrer为空

11
我们使用URLReferrer和在查询字符串中传递的代码来生成在线视频,以便只有我们的付费客户可以链接到我们的视频播放页面。这个系统已经运行良好一段时间了。我知道URL Referrer可以被欺骗,但是谁会告诉他们的客户这样做来访问视频呢?对我们来说它一直都很有效。
然而,今天有人向我提出了一个无法使用视频的问题。URLReferrer为空,并且他们的网站是HTTPS。我在网上阅读了一些文章,我的印象是当源页面为https时,没有办法访问URL referrer。这是正确的吗?如果我制作我们网站的https版本,会解决这个问题吗?还是有其他方法可以解决这个问题?
谢谢
1个回答

13

您的在线研究是正确的。不设置HTTP Referrer头或等效头的主要原因是这可能会引起安全问题。Referrer包含“您来自哪里”的信息,这是私人信息,不应向他人公开,否则如果每个人都可以跟踪您的访问记录,那么建立一个安全的网站有什么用呢?

所以:如果Referrer受到SSL或其他方式的加密,则无法获取Referrer。


更新:这里是HTTP规范对于来自安全站点的说明

如果引用页面使用了安全协议传输,则客户端在(非安全)HTTP请求中不应包括Referer头字段。

正如您可能已经猜到的那样,没有办法绕过这个限制。您唯一的选择是使用不同的验证模式。其中一种方法是为您的用户提供一个密钥,并要求他们将其作为请求的参数发送。还有几种其他方法可供考虑。


谢谢 - 关于密钥的问题很简单,就是有人可以复制链接并使用它,这就是我们要避免的。由于它是一段视频,显而易见的解决方案是只允许他们将视频嵌入到自己的页面中,而不是链接到我们的播放页面。 - cgraus
已经点赞了,只是挑剔一下,你引用的是HTTP规范,而不是HTTPS规范 ;-) - Bruno
@Bruno:你说得对,我没有足够的注意力。已经修复了。 - Abel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接