覆盖HTTP头的默认设置(X-FRAME-OPTIONS)

15

我正在使用 Laravel 的开发版本 (4.1.*),并且有一个新的默认配置我不想要:X-Frame-Options: SAMEORIGIN

目前,我通过删除 Illuminate\Http\FrameGuard.php 文件中的一行代码来禁用它。

我正在寻找更好的解决方案。我已经尝试在 filtre.php 文件中:

App::after(function($request, $response) {
   $response->header('X-Frame-Options', 'ALLOW-ALL');
});

但它只是添加了选项 (X-Frame-Options: ALLOW-ALL, SAMEORIGIN),而我需要一个覆盖。


您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Pepijn Olivier
2个回答

24

Laravel没有提供任何禁用此功能的配置。

根据Taylor Otwell的说法,绕过它的唯一方法是将以下行添加到启动文件中:

App::forgetMiddleware('Illuminate\Http\FrameGuard');

一种不太好的解决方法是注释掉有问题的行

$response->headers->set('X-Frame-Options', 'SAMEORIGIN', false);

编辑(2014年1月29日):Taylor Otwell在GitHub上提供了有关下一个Laravel策略的新信息。

默认情况下在4.2中将其删除。应该在after过滤器中 - 将保留FrameGuard类,以便人们可以手动添加中间件。


很高兴在这里也有它 :) 这里还有详细的主题:http://forumsarchive.laravel.io/viewtopic.php?pid=64869 - Rolice
所以在 4.2 版本中,App::forgetMiddleware('Illuminate\Http\FrameGuard'); 这个代码还有用吗? - jsdev
@ngakak 我还没有测试 Laravel 4,但据我理解 Taylor Otwell 的话,Laravel 4 将不再在默认标头中定义 X-FRAME-OPTIONS 值。你有 X-FRAME-OPTIONS 问题吗? - Fractaliste
Laravel 5 也有解决方案吗? - Veerle Struyf
1
现在我遇到了这个问题,并且除了上面提到的信息外,找不到任何关于5.3版本的解决方案。请问是否有解决方法? - littleswany
有没有用PHP cURL实现它的想法? - Luis

5
header方法的第三个参数应该能够满足您的需求。

1
除非在应用程序的末尾调用FrameGuard文件,否则它应该可以工作,但事实并非如此。我在Github上找到了一个关于这个问题的问题请求(https://github.com/laravel/framework/issues/1725)。 - Fractaliste

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接