Поэтому я создал форму в 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.
Я также попытался установить X-Frame-Options в конфигурационном файле Nginx, используя настил без результата:
sed -i 's/http\ {/http\ {\nadd_header X-Frame-Options SAMEORIGIN, false;\n\n/' /etc/nginx/nginx.conf
Эта ошибка возникает в нескольких браузерах, протестированных: Chrome & Сафари
Установите свой заголовок на ответ от кадра до
X-Frame-Options: ALLOW-FROM https://example.com/
где example.com — домен, запрашивающий форму.
Вы можете использовать промежуточное программное обеспечение в Laravel, чтобы сделать это.
Создайте новое промежуточное ПО.
php artisan make:middleware FrameHeadersMiddleware
затем в функции 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;
}
Затем вы можете добавить это в один из промежуточных массивов в Kernel.php
protected $middleware = [
App\Http\Middleware\FrameHeadersMiddleware::class
];
Или к одному из массивов группы промежуточного программного обеспечения, если вы хотите добавить его только к определенным маршрутам.
В моем случае, Nginx был тем, кто препятствовал доступу.
Бежать:
grep -ri "X-Frame-Options" /etc/nginx
И проверьте вывод:
/etc/nginx/snippets/ssl-params.conf:add_header X-Frame-Options DENY;
После замены ОТРИЦАТЬ в SAMEORIGIN все начало работать как положено.