首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >某些Laravel路由未设置.htaccess X-Frame-Options标头

某些Laravel路由未设置.htaccess X-Frame-Options标头
EN

Stack Overflow用户
提问于 2018-10-26 20:01:22
回答 1查看 2.3K关注 0票数 1

我们有一个Laravel应用程序(Laravel 5.6.35),其中我们使用/public文件夹中的.htaccess设置X-Frame-Options标头。

代码语言:javascript
复制
<IfModule mod_rewrite.c>
    ...
</IfModule>
<IfModule mod_headers.c>
  # Prevent click jacking
  Header set X-Frame-Options Deny
  Header always append X-Frame-Options SAMEORIGIN
</IfModule>

这在本地开发环境(Laravel、PHP7.1.23、Apache2、Vagrant上的Debian8.11)上工作得很好。所有响应都设置了X-Frame-Options标头。

在测试服务器上使用完全相同的设置(除了不是Vagrant),只有静态内容(css、js、图像)包含X-Frame-Options标头,但所有Laravel生成的内容(任何通过index.php的内容)都不设置X-Frame-Options标头。

看似相同的设置怎么会有不同的结果呢?

如何为所有路由设置X-Frame-Options报头?

(在两台服务器上都启用了headers_module )

EN

回答 1

Stack Overflow用户

发布于 2019-05-06 14:46:38

最后,我在.htaccess中添加了X-Frame选项,并将其作为Laravel中的中间件。这样,Laravel路由和静态内容(如/css/public )都可以正常工作。

文件: app/Http/Kernel.php

代码语言:javascript
复制
protected $middlewareGroups = [
    'web' => [
        ...,
        \App\Http\Middleware\XFrameHeaders::class,
    ]
],

新文件: app/Http/Middleware/XFrameHeaders.php

代码语言:javascript
复制
<?php namespace App\Http\Middleware;
use Closure;
class XFrameHeaders {
    public function handle($request, Closure $next)
    {
        $response = $next($request);
        $response->header('X-Frame-Options', 'deny');
        //add more headers here
        return $response;
    }
}

在.htaccess中(去掉'header always append‘部分):

代码语言:javascript
复制
<IfModule mod_headers.c>
  # Prevent click jacking
  Header set X-Frame-Options Deny
</IfModule>
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53008302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档