鍍金池/ 問答/PHP  網(wǎng)絡(luò)安全/ laravel 通過ajax訪問登陸頁面,登陸后怎么跳轉(zhuǎn)到登陸之前的頁面?

laravel 通過ajax訪問登陸頁面,登陸后怎么跳轉(zhuǎn)到登陸之前的頁面?

我是在登陸控制器寫了方法:

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

但是這種方法只能跳轉(zhuǎn)通過web訪問的登陸頁面;

如果用ajax訪問登陸頁面,則登陸后跳轉(zhuǎn)到首頁;

在方法里寫斷點(diǎn):

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

不管是通過ajax還是web訪問,返回的都是http://laravel.demo.com/login

這里返回的為什么是登陸頁面的url,而不是登陸之前的頁面url?

查看ajax訪問login頁面的請求header里也帶了referer地址,為什么用ajax和web訪問,跳轉(zhuǎn)結(jié)果會不一樣?

回答
編輯回答
你好胸
你是在登錄頁面去發(fā)起ajax請求時(shí),通過 referer 獲取上一級頁面,肯定還是 login 這個(gè)頁面呀。

此時(shí)需要記錄原來的頁面,有兩種辦法:

  1. 點(diǎn)擊鏈接跳轉(zhuǎn)登錄頁面時(shí)帶上原頁面url參數(shù)比如: https://www.xxx.com/login?redirect_url=A頁面url
  2. 在登錄頁面,通過 referer,把上一個(gè)頁面獲取到。

在你的 ajax 請求完畢后,再跳轉(zhuǎn)回原頁面。

2018年5月21日 23:56
編輯回答
孤慣

第一種方法,歷史記錄?
第二種,給前一個(gè)頁面做標(biāo)記,然后根據(jù)標(biāo)記,跳轉(zhuǎn)到相對應(yīng)的頁面

2017年7月23日 06:14