URL :: previous()函数始终返回我的基本URL 有人也遇到过这个问题吗?
答案 0 :(得分:1)
URL::previous()
方法使用 HTTP_REFERER 标题
但是这个标题是不可靠的,因为浏览器发送它(或浏览器不发送)
More information on that topic
因此,您的浏览器不会发送(正确的)引用标头,或者您可能手动输入URL(在这种情况下,根本没有以前的URL)
答案 1 :(得分:0)
这是URL::previous()
的一个已知问题,因为跨浏览器的HTTP_REFERER使用不一致(Chrome特别喜欢忽略它)。您可以通过一些变通方法手动处理此行为,方法是在重定向之前将当前URL存储在Session变量中,然后在重定向时将其从Session中检索(并清除)。您可以在http://gist.github.com/msurguy/5158026找到该实现。
这种方法的缺点是,如果用户在查看您的站点时打开了多个选项卡,您将得到不正确的行为,因为只有一个URL将存储在Session变量中。
为了尽可能准确,您可以使用内置的URL::previous()
(如果可用),或者如果它不是,则使用会话变量解决方法作为后备。只需检查Request::header('referer')
的值,如果它为空或包含您的根URL,则使用存储在Session变量中的回退。