例如从 淘宝那里修改一个链接,跳转到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也能实现