だから私は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のミドルウェア配列の1つに追加できます。
protected $middleware = [
App\Http\Middleware\FrameHeadersMiddleware::class
];
または、特定のルートにのみ追加する場合は、ミドルウェアグループアレイの1つに追加します。
私の場合、nginxがアクセスを妨げていました。
実行:
grep -ri "X-Frame-Options" /etc/nginx
そして、出力を確認します。
/etc/nginx/snippets/ssl-params.conf:add_header X-Frame-Options DENY;
[〜#〜] deny [〜#〜]を[〜#〜] sameorigin [〜#〜]に置き換えた後、すべてが期待どおりに機能し始めました。