12

我有一个记录用户访问的应用程序。这些访问都不是直接访问的,这些访问中有 100% 是从另一个站点引用的。

我正在通过$_SERVER['HTTP_REFERER']数据库。大约 35% 的登录主菜通过了推荐人,其余的都是空白的。

是否有一个原因?

4

6 回答 6

18

HTTP_REFERER可能是空白的原因有很多。

  1. 您必须了解它是浏览器提供的环境变量。这意味着用户可以删除它甚至更改它,如果他们愿意的话。
  2. 从书签、历史记录或手动键入链接访问链接的用户没有引用者。
  3. 众所周知,IE 会在围绕 javascript 的情况下删除引用者。例如window.openwindow.location甚至设置target="_blank"在锚点或meta refresh.
  4. 单击聊天应用程序、PDF/Word/Excel 文档中的嵌入链接也不会设置引用者。
  5. 在其他语言中使用 AJAX、file_get_contentsfopen其他类似功能可能不会设置引用请求。
  6. cURL、fsockopen、具有类似浏览器组件的应用程序可能不会设置引用者。

可能有更多情况可能发生这种情况,如果我能想到任何似乎合理的事情,我会更新。

于 2011-04-13T02:53:21.997 回答
9

如果用户直接访问您的网站,则没有推荐人。他们也可能已经设置了它,因此他们的浏览器永远不会发送推荐人。

根据这个答案,浏览器在进行元刷新时不一定会发送引荐来源网址

于 2011-04-13T02:33:46.627 回答
1

浏览器有时referer在请求中包含 。但这不是强制性的(这referer是 100% 自愿的)。实际上,围绕 HTTPS 站点存在各种隐私和安全问题referer(例如,如果 HTTPS 站点将您引至 HTTP 站点,则浏览器不应将引荐站点包含为referer)。所以不要依赖它。

于 2011-04-13T02:37:05.283 回答
1

在 Internet Explorer 4.0 和更高版本中从一个文档链接到另一个文档时,如果链接是从 HTTPS 页面到非 HTTPS 页面,则不会发送 Referer 标头。当链接来自非 HTTP(S) 协议(例如 file://)到另一个页面时,Referer 标头也不会被发送。欲了解更多信息,请访问此链接

于 2014-12-25T14:25:58.143 回答
0
  1. 直接访问您的页面(在地址栏中或从书签、历史记录等中输入 URL)
  2. 浏览器设置(禁用引荐来源或为空)
  3. 如果有人使用file_get_contents()函数请求页面内容...
于 2011-04-13T02:40:23.790 回答
0

当您找不到它丢失的原因时,这是很常见的: - 有时您的引荐来源是 https 而您在 http 上,它会丢失。

否则: - 用户通过直接输入 url 访问。- 用户已添加书签并来自书签。- 有时用户保留浏览器的默认 URL(类似于书签) - 代理浏览可能会删除推荐人。- 作为机器人访问网站(搜索引擎)

于 2016-09-26T15:42:08.943 回答