HTTP Referer并不总是被传递

ree*_*ine 12 php referer

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

我正在传递$_SERVER['HTTP_REFERER']到数据库.大约35%的记录主菜通过了参考,其余的都是空白.

是否有一个原因?

Khe*_*hez 16

HTTP_REFERER可能为空的原因有很多.

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

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


And*_*all 9

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

根据这个答案,浏览器并不一定做一个元刷新时发送引用.