У меня есть страница, работающая на http://some.example.com/myiframes/default.aspx
. На этой странице есть iframe. Источник iframe/содержит базовое приложение Laravel 5.2.Laravel TokenMismatchExpection при публикации изнутри iframe
URL-адрес страницы Laravel, который является источником iframe, равен https://laravel.example.com.
https://laravel.example.com имеет форму с кнопкой отправки. Когда использование щелкает, он/она попадает другой маршрут на том же домене, т.е. https://laravel.example.com/disply/survey
Но каждый раз, когда я отправить форму, я получаю следующее исключение
TokenMismatchException in VerifyCsrfToken.php line 67:
Чтобы убедиться, что я чист, на страница http://some.example.com/myiframes/default.aspx
мой код выглядит примерно так
на моем Laravel App, который расположен на https://laravel.example.com
здесь моя форма
<form method="POST" action="https://laravel.example.com/disply/survey" accept-charset="UTF-8" class="form">
<input name="_token" type="hidden" value="Dk6SN4WzO4brbvdnBO6JZ7e1lBGjmYz8GQJ1lYFo">
<input name="survey_id" type="hidden" value="10">
<input name="call_id" type="hidden" value="667">
<input name="pools" type="hidden">
<input name="alt_id_1" type="hidden" value="250">
<input name="alt_id_2" type="hidden" value="5">
<input name="alt_id_3" type="hidden">
<input name="alt_id_4" type="hidden">
<input name="alt_id_5" type="hidden">
<input name="alt_id_6" type="hidden">
<input name="alt_id_7" type="hidden">
<input name="alt_id_8" type="hidden">
<input name="alt_id_9" type="hidden">
<input name="alt_id_10" type="hidden">
<input name="alt_string_1" type="hidden">
<input name="alt_string_2" type="hidden">
<input name="alt_string_3" type="hidden">
<input name="alt_string_4" type="hidden">
<input name="alt_string_5" type="hidden">
<input name="alt_string_6" type="hidden">
<input name="alt_string_7" type="hidden">
<input name="alt_string_8" type="hidden">
<input name="alt_string_9" type="hidden">
<input name="alt_string_10" type="hidden">
<div class="text-center">
<input class="btn btn-primary" type="submit" value="Start Survey">
</div>
</form>
Форма отлично работает вне iframe. Проблема возникает только тогда, когда я внутри iframe.
Я открыл VerifyCsrfToken
класс, расположенный в App\Http\Middleware
и добавил http://some.example.com
в $ за исключением того массива, который не исправить эту проблему.
protected $except = [
'http://some.example.com'
];
Что может быть причиной этой проблемы? Как я могу исправить проблему?
Edited, Вот мой шаблон
{!! Form::open([
'url' => route('my.surveys.display'),
'class' => 'form',
'method' => 'post'
]) !!}
{!! Form::hidden('survey_id', $survey_id) !!}
{!! Form::hidden('call_id', $call_id) !!}
{!! Form::hidden('pools', $pools) !!}
{!! Form::hidden('call_type', $type) !!}
{!! Form::hidden('alt_id_1', $alt_id_1) !!}
{!! Form::hidden('alt_id_2', $alt_id_2) !!}
{!! Form::hidden('alt_id_3', $alt_id_3) !!}
{!! Form::hidden('alt_id_4', $alt_id_4) !!}
{!! Form::hidden('alt_id_5', $alt_id_5) !!}
{!! Form::hidden('alt_id_6', $alt_id_6) !!}
{!! Form::hidden('alt_id_7', $alt_id_7) !!}
{!! Form::hidden('alt_id_8', $alt_id_8) !!}
{!! Form::hidden('alt_id_9', $alt_id_9) !!}
{!! Form::hidden('alt_id_10', $alt_id_10) !!}
{!! Form::hidden('alt_string_1', $alt_string_1) !!}
{!! Form::hidden('alt_string_2', $alt_string_2) !!}
{!! Form::hidden('alt_string_3', $alt_string_3) !!}
{!! Form::hidden('alt_string_4', $alt_string_4) !!}
{!! Form::hidden('alt_string_5', $alt_string_5) !!}
{!! Form::hidden('alt_string_6', $alt_string_6) !!}
{!! Form::hidden('alt_string_7', $alt_string_7) !!}
{!! Form::hidden('alt_string_8', $alt_string_8) !!}
{!! Form::hidden('alt_string_9', $alt_string_9) !!}
{!! Form::hidden('alt_string_10', $alt_string_10) !!}
<div class="text-center">
{!! Form::submit('Start Survey', ['class' => 'btn btn-primary', 'id' => 'start_survey']) !!}
</div>
Попробуйте изменить '' to '{{csrf_field()}}'. – maiorano84
@ maiorano84 Я использую {{csrf_field()}}. –
Можете ли вы сбросить оба запроса внутри и вне iframe и посмотреть, что не соответствует. –