【问题标题】:php header('Location: http://example.com') does not pass the referrer [duplicate]php header('Location: http://example.com') 没有通过referrer [重复]
【发布时间】:2018-07-11 19:00:31
【问题描述】:

问题:

通过header('Location: http://example.com') 将用户从http://sample.com 重定向到http://example.com - $_SERVER['HTTP_REFERER']; 为空。

即使通过header('Referer: http://sample.com') 设置referer,然后通过header('Location: http://example.com') 重定向-$_SERVER['HTTP_REFERER']; 仍然是空的。

预期结果:

http://example.com 通过header('Location: http://example.com') 接收带有适当引荐来源的$_SERVER['HTTP_REFERER']

用例

其他:

  • 如果用户单击http://sample.com 上的链接,则行为正确
  • 如果用户通过 javascript `window.location="http://example.com" 重定向,行为是正确的
  • $_GET 不是一个选项,因为http://example.com 无法验证邀请,因此很容易伪造它

【问题讨论】:

  • HTTP_REFERRER 似乎是由浏览器通知的。它可能适用于 Chrome,但不适用于 Firefox,反之亦然,它不值得信赖,因为它没有标准化。
  • 任何建议如何实现它并确保跨浏览器兼容性?
  • 我能问一下你需要那个标题吗?正如下面的答案所述,此标头不值得信任并且并不总是存在。
  • 也许用 $_GET 重定向?
  • 您可以确定“在另一边”收到的唯一信息是您放入 Location: 标头的任何信息。所以,是的,在 URL 本身中添加一些识别信息。

标签: php header referer


【解决方案1】:

来自 PHP 文档Server Variables:

'HTTP_REFERER' 引用该页面的地址(如果有) 用户代理到当前页面。这是由用户代理设置的。不是全部 用户代理会设置这个,有些提供修改的能力 HTTP_REFERER 作为一个特性。简而言之,它不能真正被信任。

您最好在 Cookie 或 Session 中设置当前 url 并使用它。

【讨论】:

  • 好吧,如果您能够集中 cookie,那么它是正确的做法。在跨域的情况下,其中一些域可能超出您的控制范围,这是不可能的
猜你喜欢
  • 1970-01-01
  • 2014-07-22
  • 1970-01-01
  • 2019-05-29
  • 2019-05-10
  • 1970-01-01
  • 2011-02-14
  • 2011-12-17
相关资源
最近更新 更多