Laravel 5.1 - 设置X-Frame-Options会导致错误

时间:2015-11-02 12:39:33

标签: php laravel laravel-5 middleware

我在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!

enter image description here

这是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时,我会收到相同的错误。

是否有其他人遇到类似的事情,或者我是否会以不正确的方式添加此标题?

0 个答案:

没有答案