【问题标题】:$_SERVER["HTTP_REFERER"] not returning full URL$_SERVER["HTTP_REFERER"] 没有返回完整的 URL
【发布时间】:2014-02-11 22:48:24
【问题描述】:

我正在尝试应用一个快速补丁来解决我们正在使用的扩展程序的问题。因此,请原谅我请求帮助的这种“类似创可贴”的修复。这只是为了在大约 20 分钟或更短的时间内解决问题,并安排在本周晚些时候进行永久性修复。

话虽如此,我正在努力获取使用 $_SERVER["HTTP_REFERER"] 所期望的值。目前我们的 URL 有点奇怪。下面是一个 URL 示例...:

http://domain.com/custom-wheels-performance-tires/custom-wheels.html#/custom-wheels-performance-tires/custom-wheels.html?wheel_diameter=2663

使用 $_SERVER["HTTP_REFERER"] 时,我得到的值(对于上面的 URL)是:

http://domain.com/custom-wheels-performance-tires/custom-wheels.html

显然,它在 URL 中的 # 处被截断。常识是从 URL 中删除它,但我将不得不深入研究其他人的代码来做到这一点,它超过了分配给这个补丁的时间。有没有办法获取完整的 URL(即使它不是 $_SERVER["HTTP_REFERER"])?

感谢所有帮助!

【问题讨论】:

  • $_SERVER["HTTP_REFERER"] 100% 不可靠
  • 不,fragment (#) 一开始就从不发送到服务器。如果您需要...它需要一些 javascript-voodoo 才能将其添加到请求中(即:不再有简单的链接)。
  • 顺便说一句:对于支持它的浏览器,actually pushing real urls to the history is preferred,让我们希望片段使用消失。
  • 感谢 Wrikken 发现问题!我很可能不得不通过 Javascript 执行此操作,除非我能找出为什么 URL 会以如此凌乱的方式快速形成。无论如何,非常感谢您如此迅速地帮助了我,并且您没有因为如此愚蠢的问题而对我投反对票。 :-)
  • 我认为 HTTP_REFERER 的使用应该比片段更成问题

标签: php referrer http-referer


【解决方案1】:

由于浏览器处理 URL 的方式,服务器永远不会收到超过哈希片段标识符 (#) 的任何内容。该片段旨在供浏览器用于将页面滚动到锚点。

但是,可以使用 JavaScript 获取片段,并将其发送到浏览器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-29
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多