因此,我在 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
将帧响应的标题设置为
X-Frame-Options: ALLOW-FROM https://example.com/
其中 example.com 是请求表单的域。
您可以使用 Laravel 中的中间件来执行此操作。
生成一个新的中间件。
php artisan make:middleware FrameHeadersMiddleware
然后在刚刚创建的中间件的句柄函数中执行如下操作:
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
];
或者,如果您只想将其添加到特定路由,则可以添加到中间件组数组之一。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)