kernel.php
protected $routeMiddleware = [
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'adminauth' => \App\Http\Middleware\AdminAuth::class,
];
web.php
Route::group(['middleware' => 'adminauth'], function() {
//route for admin dashboard
Route::get('/admin', [
'uses' => 'AdminController@dashboard',
'as' => 'dashboard'
]);
//route for admin setting
Route::get('/admin/setting', [
'uses' => 'AdminController@setting'
]);
});
AdminAuth.php
public function handle($request, Closure $next)
{
return redirect('/admin/setting');
//return $next($request);
}
AdminController.php
public function setting() {
$admin = $this->admin;
$notification = $this->notification;
return view('admin/setting')->with(compact(
'admin',
'notification'
));
}
我遇到了此问题,即 页面无法正确重定向 Firefox已检测到服务器正在以永远无法完成的方式重定向对该地址的请求。 有时可能是由于禁用或拒绝接受Cookie引起的。
答案 0 :(得分:0)
问题是您的admin/setting
路由使用了adminauth
中间件,但是如果您的adminauth
中间件没有通过,则会重定向到admin/setting
。
仅提供说明性内容:
重定向响应是代码在300-399之间的响应,这些响应被发送到浏览器,告诉浏览器下一步该做什么。默认情况下,浏览器将遵循重定向并向该位置创建新请求。
在您的情况下,浏览器创建对admin/setting
中间件的请求失败,并告诉浏览器重定向到admin/setting
,这将再次执行完全相同的操作。 Firefox之类的浏览器具有内置的机制来检测此情况,而不是向服务器发送大量请求,只会停止此循环,并让用户知道存在问题。
要解决此问题,您需要重定向到其他地方,或者将/admin/setting
从adminauth
中间件中排除。
解决方案将取决于您的应用程序。
关于为什么的更多详细信息Firefox正确选择了停止重定向:
根据section 9.1.2 of the HTTP/1.1 protocol,GET请求是幂等的,即
N个> 0个相同请求的副作用与单个请求相同
这是假设浏览器用来声明,由于对X的请求导致重定向到相同的X,因此这是无限重定向,应该停止。