laravel 通过ajax访问登陆页面,登陆后怎么跳转到登陆之前的页面?

我是在登陆控制器写了方法:

protected function redirectTo()
    {
        return URL::previous();
    }

但是这种方法只能跳转通过web访问的登陆页面;

如果用ajax访问登陆页面,则登陆后跳转到首页;

在方法里写断点:

protected function redirectTo()
    {
        dd(\request()->headers->get('referer'));
    }

不管是通过ajax还是web访问,返回的都是http://laravel.demo.com/login

这里返回的为什么是登陆页面的url,而不是登陆之前的页面url?

查看ajax访问login页面的请求header里也带了referer地址,为什么用ajax和web访问,跳转结果会不一样?

阅读 2.4k
2 个回答

第一种方法,历史记录?
第二种,给前一个页面做标记,然后根据标记,跳转到相对应的页面

你是在登录页面去发起ajax请求时,通过 referer 获取上一级页面,肯定还是 login 这个页面呀。

此时需要记录原来的页面,有两种办法:

  1. 点击链接跳转登录页面时带上原页面url参数比如: https://www.xxx.com/login?redirect_url=A页面url
  2. 在登录页面,通过 referer,把上一个页面获取到。

在你的 ajax 请求完毕后,再跳转回原页面。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进