假设我正在一个网站上查看主页:https://whateverxyz.com/index
。然后我要么
- (A) 单击页面 HTML 中的导航链接
https://whateverxyz.com/app1.html
- (B) 单击浏览器书签
https://whateverxyz.com/app1.html
服务器能否区分请求是否来自A
or B
?客户端 JavaScript 可以运行在app1.html
分辨其中的不同之处?
引用你的问题:
- 服务器能否区分请求是来自 A 还是 B?
- 在 app1.html 上运行的客户端 JavaScript 可以区分吗?
在这两种情况下都无法检测到差异。
我们官方资源怎么说?
引用自 RFC 7231 - 超文本传输协议 (HTTP/1.1)
如果目标 URI 是从没有自己的 URI 的源获取的(例如,从用户键盘输入,或其中的一个条目
用户的书签/收藏夹),用户代理必须排除
Referer 字段或使用值“about:blank”发送。
Referer 字段有可能泄露有关用户的请求上下文或浏览历史记录的信息,这是一种隐私
关注引用资源的标识符是否泄露个人信息
信息(例如帐户名)或假定的资源
保密(例如在防火墙后面或安全内部)
服务)。大多数通用用户代理不会发送 Referer
当引用资源是本地“文件”或“数据”时的标头字段
URI。用户代理不得在请求中发送 Referer 头字段
如果引用页面是通过以下方式接收的,则为不安全的 HTTP 请求
安全协议。看部分
9.4出于额外的安全考虑。
了解更多相关信息:
替代解决方案
但你可以在客户端做一些事情。在页面中https://whateverxyz.com/index
您可以用 JavaScript 编写一个侦听器来检测此页面链接上的所有点击。在点击事件上你可以写link URL和time in a cookie
, an IndexedDB
or a localStorage
。然后在页面中https://whateverxyz.com/app1.html
你必须阅读这些信息。如果此信息不是未定义的,则它来自链接,而在所有其他情况下,它来自书签(或者可能是在地址栏中提示,或其他)。
查看相关问题:
- 什么情况下HTTP_REFERER会为空
- 客户端如何检测页面何时被添加书签?
- 如何检测链接是否已在用户的书签中?
- 有没有办法知道有人是否为您的网站添加了书签?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)