2017-01-20 14 views
2

私はLaravelにフォームを構築して外部でホストしていますが、これをHTMLページ内に表示したいのですが、X-Frame-Optionsに問題があります。LaravelがiFrameで「 'X-Frame-Options」として' SAMEORIGIN 'に表示することを拒否しています。

正確なエラーメッセージは次のとおりです。

Refused to display 'url' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'. 

私はこれが原因FrameGuardミドルウェアであることが、以前のStackOverflowの回答に見てきましたが、これはその後削除されていると、コードの問題行がそのファイルにありません。

Laravel Version 5.3

また、私は結果なしで床材を使用してnginxの設定ファイルでX-フレーム・オプションを設定しようとしています

sed -i 's/http\ {/http\ {\nadd_header X-Frame-Options SAMEORIGIN, false;\n\n/' /etc/nginx/nginx.conf 

このエラーは、テストした複数のブラウザで発生している:クローム& Safariは

答えて

2

は、example.comがフォームを要求するドメインである

X-Frame-Options: ALLOW-FROM https://example.com/ 

にフレームからの応答であなたのヘッダーを設定します。

laravelでミドルウェアを使用してこれを行うことができます。

新しいミドルウェアを生成します。

php artisan make:middleware FrameHeadersMiddleware 

その後、作成したばかりのミドルウェアのハンドル機能にような何かを:あなたは、その後Kernel.php

protected $middleware = [ 
    App\Http\Middleware\FrameHeadersMiddleware::class 
]; 
におけるミドルウェア・アレイの1つにこれを追加することができます

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; 
} 

または特定のルートにのみ追加する場合は、ミドルウェアグループアレイの1つに追加します。

+0

ありがとう、私はこれを試みたが、nginxの設定ファイルで動作しませんでした、どこにも私はそれを試すことができますか? – littleswany

+0

@littleswanyはそのヘッダーをフォームからの応答に戻しますか? – Joe

+0

nginxであなたの答えと同じように設定しても、同じoriginオプションが返ってくるわけではないので、laravelはそれを変更していると思います – littleswany

3

私の場合、nginxは、アクセスを妨げるものでした。

ラン:

grep -ri "X-Frame-Options" /etc/nginx   

と出力チェック:は予想通りにSAMEORIGINすべてが仕事を始めDENY交換後

/etc/nginx/snippets/ssl-params.conf:add_header X-Frame-Options DENY; 

を。

+0

タイ良い卿、これも私の問題だった。私は、私の欲望が私のページをiframeにすることを許可して以来、私は代わりにラインをコメントアウトしました –

+0

これは私のために働いた解決策でした。 – Alin

関連する問題