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

时间:2011-07-20 12:54:27

标签: asp.net http browser http-headers

我有一个登录页面,来自不同域的用户被重定向到此页面以用于SSO。我使用referrer HTTP Header字段来了解用户来自哪里,因此在成功登录后,我将他/她返回到他/她的原始域。 但有时我的推荐人没有设置,而有时则设置。为什么呢?

2 个答案:

答案 0 :(得分:11)

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

  1. 输入您网页的网址,直接进入浏览器的地址栏
  2. 点击其他网站指向您网站的链接
  3. 重新加载当前页面
  4. 通过在您的网站上提交表单(将POST请求发送回您的网站)
  5. 浏览浏览器的后退/前进按钮。
  6. 通过上一页重定向到当前页面。
  7. 现在,浏览器在设置引用标头字段的方式和时间方面确实存在差异。但作为一般规则,您可以确保在链接点击或提交表单(发布请求)时,他们设置了referrer字段。此外,如果您通过重定向或链接访问当前页面,浏览器仍会在F5(页面重新加载)上保留引用标题。

    如果您看到您的推荐人字段为空,那是因为有人知道您的登录页面网址并将其直接输入地址栏,或者有人为其添加了书签,因此请发送GET请求。

    通常,您不应该总是期望引用者字段,因为它超出了您的控制范围。您应该使用cookie或查询字符串,因为它们在您的控制之下。

答案 1 :(得分:4)

另一件事是,某些用户可能会在浏览器中将referer选项设置为禁用,作为浏览器安全设置的一部分。