Функция ответа laravel () неправильно устанавливает источник iframe
У меня есть приложение Laravel 5.7. у меня есть iframe на одной странице с
<iframe src="{{ url('pdf') }}" width="100%" height="80%" id="frame_id" name="test_frame"></iframe>
когда
Route::get('/pdf', function () {
return 'abc';
});
тогда внутри консоли я пишу
window.frames["frame_id"].contentWindow.origin => http://cms.test
но когда
Route::get('/pdf', function () {
return response()->file('test.pdf');
});
затем
window.frames["frame_id"].contentWindow.origin
=> SecurityError: Permission denied to access property "origin" on cross-origin object
почему происхождение меняется в обоих случаях? как это исправить, так как из-за перекрестного происхождения я не могу манипулировать iframe dom
1 ответ
Вышеприведенное объяснение не дает понять, что вы пытаетесь сделать, но посмотрите на эту страницу, чтобы узнать, как правильно настроить параметры подделки межсайтовых запросов.
Важно понимать, что такое CSRF. По сути, это функция безопасности, которая не позволяет мне копировать ваш HTML, модифицировать его для выполнения чего-то, что вы не намеревались, а затем отправлять запрос с чем-то, что может использовать ваш сайт.
Чтобы заставить вашу логику работать, вам необходимо обойти встроенное промежуточное программное обеспечение CSRF Laravel. Для производственных серверов я бы НЕ удалял его, но для тестирования вы можете просто закомментировать строку, содержащую "\App\Http\Middleware\VerifyCsrfToken::class" в вашем файле Kernel.php, и это должно сработать.