浏览器何时在HTTP请求头中设置“referrer”?

6

我有一个登录页面,来自不同域的用户会被重定向到该页面以进行SSO。我使用引用HTTP头字段来知道用户来自哪里,因此在成功登录后,我将其返回到其原始域。但有时我的引用者未设置,而其他时间则已设置。为什么?

2个回答

14

用户可以通过不同的方法访问您的页面:

  1. 通过在浏览器地址栏中直接输入页面的URL
  2. 通过从其他网站点击链接到您的网站
  3. 通过重新加载当前页面
  4. 通过提交您网站上的表单(向您的网站发送POST请求)
  5. 通过浏览器的前进/后退按钮导航。
  6. 通过从以前的页面重定向到当前页面。

现在,浏览器在设置referrer header字段的方式和时间方面确实有所不同。但是作为一个通用规则,您可以确定,在链接单击或提交表单(post请求)时,它们会设置referrer字段。此外,如果您通过重定向或链接来到当前页面,则浏览器在F5(页面重新加载)时仍会保留referrer header。

如果您发现referrer字段为空,这是因为有人知道您的登录页面URL并直接输入地址栏,或者有人已将其加入了书签,因此发送了GET请求。

一般来说,您不应总是期望referrer字段存在,因为这超出了您的控制范围。您应该使用cookie或查询字符串,因为它们在您的控制之下。


2
@Saeed,“你可以确定”,除非用户在浏览器中禁用了该功能。 - Qtax

4

另一件事是,有些用户可能在其浏览器的安全设置中将引荐者选项禁用。


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