我在app / Http / Kernal.php中将以下中间件添加到HTTP内核堆栈中,它将X-Frame-Options:SAMEORIGIN添加到标题中。
<?php
namespace App\Http\Middleware;
use Closure;
class FrameGuard
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$request->headers->set('X-Frame-Options', 'SAMEORIGIN');
return $next($request);
}
}
它会导致显示无相关错误,并且还会呈现部分视图。视图的这一部分是从数据库中呈现一个列表,当从堆栈中删除FrameGuard中间件时,该列表可以正常工作。
FatalErrorException in
MySqlGrammar.php line 139:
Maximum function nesting level of '100' reached, aborting!
这是app / Http / Kernel.php中的中间件堆栈。
protected $middleware = [
CheckForMaintenanceMode::class,
Middleware\EncryptCookies::class,
AddQueuedCookiesToResponse::class,
StartSession::class,
ShareErrorsFromSession::class,
Middleware\AccessControlAllowOrigin::class,
FrameGuard::class,
];
删除FrameGuard::class
后,一切都按预期工作,但是当添加FrameGuard::class
时会导致上述错误。此外,当我将FrameGuard::class
保留在堆栈中并在$request->headers->set('X-Frame-Options', 'SAMEORIGIN');
中间件类中注释掉FrameGuard
时,我会收到相同的错误。
是否有其他人遇到类似的事情,或者我是否会以不正确的方式添加此标题?