Laravel 5.1 - 仅在Safari浏览器上使用Iframe的令牌不匹配问题

Ale*_*Per 7 javascript php safari iframe laravel

我在laravel 5.1中创建了几个表单,现在我在使用IFrame的另一个站点上使用这些表单.这些表单适用于除Safari之外的所有浏览器.当我在填写表单后尝试提交/发布数据时,我收到错误"CSRF Token Mismatch",我不知道这里有什么问题,csrf令牌也正在创建和发送.这只发生在safari浏览器的情况下.

有人可以指导我,我怎么能摆脱这个问题?

重现步骤:

创建一个表单,然后通过IFrame使用它.提交表单后,将生成CSRF令牌不匹配错误.

怎么解决这个?请帮忙!

代码示例:

<form method="post" action="/step1/{{$voucher->user_id}}" accept-charset="UTF-8">
<input name="_method" type="hidden" value="post">
{!! csrf_field() !!} 
<div class="row" style="margin-top:15px; margin-bottom:15px;">
<div class="col-md-4 col-xs-5 hidden">
<input name="voucher_id" type="hidden" value="{{$voucher->id}}" id="voucher_id">

  <input  class="form-control spin text-center  qty1" name="qty" id="qty" type="text" value="1" >
  <input name="r_full_name" type="hidden" value="" id="r_full_name">


</div>

<div class="col-md-3 col-xs-3">
<button type="submit" class="btn btn-theme"><i class="fa fa-shopping-cart" aria-hidden="true"></i> | BUY</button>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)

这是示例代码... AGAIN所有这些在任何其他浏览器(FF,Chrome)中都很完美,但是当我将此表单放入另一个站点的iframe时,我得到了TokenMissmatch错误...

Mar*_*amn 6

这很可能与 Safari 处理 cookie 和 iframe 的方式有关,请参阅此问题的答案,其中引用了Safari Developer FAQ的旧版本,其中指出

Safari 附带了一个保守的 cookie 策略,该策略将 cookie 写入仅限于用户选择(“导航到”)的页面。此默认保守策略可能会混淆尝试写入 cookie 并失败的基于框架的站点。

这将解释为什么你遇到这个问题。

该问题的第二个答案提出了可以在此处找到的解决方案。这与重定向到拥有 cookie 的域、设置会话和重定向回基本相同,这是此处提到的另一种解决方案。