欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

获取跳转前的url

程序员文章站 2022-05-22 10:33:44
...
例如从 淘宝那里修改一个链接,跳转到a.php
然后a.php又 hedader_location重定向到 b.php
在b.php 用 http_referer 获取到的是淘宝的url,请问用什么方法能获取 中间这个页面 a.php?

不希望是在a.php那里传值过去,因为有很多页面都跳转到b.php,在每个中间页面处理起来太麻烦

回复内容:

例如从 淘宝那里修改一个链接,跳转到a.php
然后a.php又 hedader_location重定向到 b.php
在b.php 用 http_referer 获取到的是淘宝的url,请问用什么方法能获取 中间这个页面 a.php?

不希望是在a.php那里传值过去,因为有很多页面都跳转到b.php,在每个中间页面处理起来太麻烦

首先如果在不在url里面传值,或者其他session cookie的情况下,能获取到来路的就只有reffer。

但是:
从这个事情的结果上讲
当浏览器打开一个301链接的时候,实际上是要求浏览器重新请求一遍新的提供的301目标地址。然后浏览器直接重新请求了新页面,并没有带上运行301的url。结果就是服务器与客户端并没有任何记录这个301页面url信息,谁也获取不到。

举个生活的例子,我们买了个中转的机票,在上第二架飞机的时候,你虽然拿出机票,那个飞机告诉你,飞机有问题,要你做另外一个飞机。然后我们拿这个票坐了另外的飞机,那这个飞机看到票的时候,只知道你第一架飞机是什么,并不知道是哪个飞机让你转过来的。机票就是在每次浏览器请求带上去的http-reffer

这也是在http协议的一些用户隐私策略中所提到的,并不是强制要求,只是说没有必要,如果http reffer被记录为跳转页面,那么点浏览器返回将又回到自己的页面上来,所以这个做法逻辑上也是讲得通。
https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.36
https://www.w3.org/Protocols/rfc2616/rfc2616-sec15.html

document.referrer

如果不考虑IE67的话可以使用h5中的localstorage,至于cookie也能实现

相关标签: php