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

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

我是在登陸控制器寫(xiě)了方法:

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

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

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

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

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

不管是通過(guò)ajax還是web訪問(wèn),返回的都是http://laravel.demo.com/login

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

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

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

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

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

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

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

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

2017年7月23日 06:14