lit*_*any 5 php iframe x-frame-options laravel laravel-5
所以我在Laravel中构建了一个表单并在外部进行托管,但是我想在HTML页面中显示它,但是我遇到了X-Frame-Options的问题.
确切的错误消息是:
Refused to display 'url' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'.
Run Code Online (Sandbox Code Playgroud)
我在之前的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
Run Code Online (Sandbox Code Playgroud)
此错误发生在多个浏览器中,经过测试:Chrome和Safari
就我而言,nginx是阻止访问的人.
跑:
grep -ri "X-Frame-Options" /etc/nginx
Run Code Online (Sandbox Code Playgroud)
并检查输出:
/etc/nginx/snippets/ssl-params.conf:add_header X-Frame-Options DENY;
Run Code Online (Sandbox Code Playgroud)
将DENY替换为SAMEORIGIN后,一切都按预期开始工作.
将标题设置为从框架到
X-Frame-Options: ALLOW-FROM https://example.com/
Run Code Online (Sandbox Code Playgroud)
其中example.com是请求表单的域。
您可以在laravel中使用中间件来做到这一点。
生成一个新的中间件。
php artisan make:middleware FrameHeadersMiddleware
Run Code Online (Sandbox Code Playgroud)
然后在刚创建的中间件的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;
}
Run Code Online (Sandbox Code Playgroud)
然后可以将其添加到Kernel.php中的中间件数组之一
protected $middleware = [
App\Http\Middleware\FrameHeadersMiddleware::class
];
Run Code Online (Sandbox Code Playgroud)
或如果只想将其添加到特定路由,则添加到中间件组阵列之一。
| 归档时间: |
|
| 查看次数: |
11323 次 |
| 最近记录: |