当前位置:  开发笔记 > 编程语言 > 正文

Laravel拒绝在iFrame中显示为"'X-Frame-Options'到'SAMEORIGIN'."

如何解决《Laravel拒绝在iFrame中显示为"'X-Frame-Options'到'SAMEORIGIN'."》经验,为你挑选了2个好方法。

所以我在Laravel中构建了一个表单并在外部进行托管,但是我想在HTML页面中显示它,但是我遇到了X-Frame-Options的问题.

确切的错误消息是:

Refused to display 'url' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'.

我在之前的StackOverflow答案中看到这是由于FrameGuard中间件,但此后已被删除,并且代码的发行行不在该文件中.

Laravel版本5.3.

我还尝试使用没有结果的地板在Nginx配置文件中设置X-Frame-Options:

sed -i 's/http\ {/http\ {\nadd_header X-Frame-Options SAMEORIGIN, false;\n\n/' /etc/nginx/nginx.conf

此错误发生在多个浏览器中,经过测试:Chrome和Safari



1> Daniel Camar..:

就我而言,nginx是阻止访问的人.

跑:

grep -ri "X-Frame-Options" /etc/nginx        

并检查输出:

/etc/nginx/snippets/ssl-params.conf:add_header X-Frame-Options DENY;

DENY替换为SAMEORIGIN后,一切都按预期开始工作.



2> Joe..:

将标题设置为从框架到

X-Frame-Options: ALLOW-FROM https://example.com/

其中example.com是请求表单的域。

您可以在laravel中使用中间件来做到这一点。

生成一个新的中间件。

php artisan make:middleware FrameHeadersMiddleware

然后在刚创建的中间件的handle函数中执行以下操作:

namespace App\Http\Middleware;
use Closure;

public function handle($request, Closure $next)
{
     $response = $next($request);
     $response->header('X-Frame-Options', 'ALLOW FROM https://example.com/');
     return $response;
 }

然后可以将其添加到Kernel.php中的中间件数组之一

protected $middleware = [
    App\Http\Middleware\FrameHeadersMiddleware::class
];

或如果只想将其添加到特定路由,则添加到中间件组阵列之一。

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有