asp.net - 当页面为 HTTPS 时,URLReferrer 为 null

标签 asp.net ssl https referrer

我们使用 URLReferrer 和在查询字符串中传递的代码来制作在线视频,这样只有我们的付费客户才能链接到我们的视频播放页面。这个系统已经运行了一段时间。我知道 URL 引荐来源网址可以被欺骗,但谁会告诉他们的客户做这样的事情来访问视频?它对我们很有效。

但是,今天我被问及对它不起作用的人。 URLReferrer 为空,他们的网站是 HTTPS。我在网上做了一些阅读,我的印象是当源页面是 https 时无法访问 URL 引荐来源网址。它是否正确 ?如果我制作我们网站的 https 版本,是否可以解决问题?或者我还有其他方法可以解决这个问题吗?

谢谢

最佳答案

您的在线研究是正确的。不设置 HTTP Referrer header 或等效 header 的主要原因是这可能是一个安全问题。推荐人包含“你来自哪里”,这是私有(private)信息,不应该暴露给其他人,如果每个人都可以跟踪你去过的地方,那么拥有一个安全的网站有什么用?

因此:如果引荐来源网址已加密(使用 SSL 或其他方式),您将无法获得引荐来源网址。


更新:这是 HTTP specification says about coming from a secure site 的内容:

Clients SHOULD NOT include a Referer header field in a (non-secure) HTTP request if the referring page was transferred with a secure protocol.

您可能已经猜到,没有办法绕过这个限制。您唯一的选择是使用不同的验证模型。一种这样的方法是为您的用户提供一个 key ,并要求他们将其作为请求的参数发送。可以想到其他几种方法。

关于asp.net - 当页面为 HTTPS 时,URLReferrer 为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8848774/

相关文章:

asp.net - 调用按钮事件而不回发

c# - 如何解决 "Failed to bind to address http://127.0.0.1:5000: address already in use."

.net - 如何在 WIX 安装项目中添加 ASP.NET web 项目作为引用?

apache - 如何处理 https TYPO3 后端中的 "non-https"(http) 站点

java - OpenLDAP 和 SSL

Node.js、socket.io https 连接

c# - 从 Umbraco API Controller 返回默认的 json

.net - 中间人服务器 HTTPS/SSL

delphi - 如何使用突触创建 https 客户端?

security - IE 中公认的可信证书提供者列表