Yii2 ajax 自动跳转至登录页面原理分析

某些路由(页面,下同)需要登录才能访问,我们通常使用访问控制过滤器(Access Control Filter)来进行处理。如果未登录用户访问对应路由,会返回 302 并带上 Lacation 的 HTTP Header,此时浏览器会跳转到对应页面。当使用 ajax 请求需要登录的路由时,页面也会跳转到登录页面。仔细查看 Response Header 会发现存在名为 X-Redirect 的 HTTP Header,yii 框架自带的 yii.js(YiiAsset) 里有如下逻辑:

$(document).ajaxComplete(function (event, xhr, settings) {
	var url = xhr && xhr.getResponseHeader('X-Redirect');
	if (url) {
		window.location = url;
	}
});

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注