只有iFrame中的Laravel 5 TokenMismatchException

只有iFrame中的Laravel 5 TokenMismatchException,第1张

概述我有一份工作表: {!! Form::open() !!} <div class="form-group"> <label for="name">Name</label> <input type="text" class="form-control" id="name" placeholder="Name"> 我有一份工作表:

{!! Form::open() !!}            <div >                <label for="name">name</label>                <input type="text"  ID="name" placeholder="name">            </div>            <div >                <label for="division">division</label>                <input type="text"  ID="division" placeholder="division">            </div>        {!! Form::submit('send',array('class'=>'btn btn-success pull-right')) !!}    {!! Form::close() !!}

这可以作为提交和存储输入的独立页面.现在我需要将它放在iframe中,以便可以从其他网站调用它.当我这样做时:

<iframe src="http://1.1.1.1/register_user" ></iframe>

表单显示但是当用户提交时,他们会得到以下内容:

TokenMismatchException in VerifyCsrftoken.PHP line 53:1. in VerifyCsrftoken.PHP line 532. at VerifyCsrftoken->handle(object(Request),object(Closure))3. at call_user_func_array(array(object(VerifyCsrftoken),'handle'),array(object(Request),object(Closure))) in Pipeline.PHP line 1244. at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in ShareErrorsFromSession.PHP line 545. at ShareErrorsFromSession->handle(object(Request),object(Closure))6. at call_user_func_array(array(object(ShareErrorsFromSession),object(Closure))) in Pipeline.PHP line 1247. at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in StartSession.PHP line 628. at StartSession->handle(object(Request),object(Closure))9. at call_user_func_array(array(object(StartSession),object(Closure))) in Pipeline.PHP line 12410. at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in AddQueuedcookiesToResponse.PHP line 3711. at AddQueuedcookiesToResponse->handle(object(Request),object(Closure))12. at call_user_func_array(array(object(AddQueuedcookiesToResponse),object(Closure))) in Pipeline.PHP line 12413. at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Encryptcookies.PHP line 5914. at Encryptcookies->handle(object(Request),object(Closure))15. at call_user_func_array(array(object(Encryptcookies),object(Closure))) in Pipeline.PHP line 12416. at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in CheckForMaintenanceMode.PHP line 4217. at CheckForMaintenanceMode->handle(object(Request),object(Closure))18. at call_user_func_array(array(object(CheckForMaintenanceMode),object(Closure))) in Pipeline.PHP line 12419. at Pipeline->Illuminate\Pipeline\{closure}(object(Request))20. at call_user_func(object(Closure),object(Request)) in Pipeline.PHP line 10321. at Pipeline->then(object(Closure)) in Kernel.PHP line 12222. at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.PHP line 8723. at Kernel->handle(object(Request)) in index.PHP line 54

这是我在日志中看到的:

[2015-08-10 00:52:21] production.ERROR: exception'Illuminate\Session\TokenMismatchException' in /home/forge/default/vendor/laravel/framework/src/Illuminate/Foundation/http/MIDdleware/VerifyCsrftoken.PHP:53Stack trace:#0 [internal function]: Illuminate\Foundation\http\MIDdleware\VerifyCsrftoken->handle(Object(Illuminate\http\Request),Object(Closure))#1 /home/forge/default/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.PHP(124): call_user_func_array(Array,Array)#2 /home/forge/default/vendor/laravel/framework/src/Illuminate/VIEw/MIDdleware/ShareErrorsFromSession.PHP(54): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\http\Request))#3 [internal function]: Illuminate\VIEw\MIDdleware\ShareErrorsFromSession->handle(Object(Illuminate\http\Request),Object(Closure))#4 /home/forge/default/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.PHP(124): call_user_func_array(Array,Array)#5 /home/forge/default/vendor/laravel/framework/src/Illuminate/Session/MIDdleware/StartSession.PHP(62): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\http\Request))#6 [internal function]: Illuminate\Session\MIDdleware\StartSession->handle(Object(Illuminate\http\Request),Object(Closure))#7 /home/forge/default/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.PHP(124): call_user_func_array(Array,Array)#8 /home/forge/default/vendor/laravel/framework/src/Illuminate/cookie/MIDdleware/AddQueuedcookiesToResponse.PHP(37): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\http\Request))#9 [internal function]: Illuminate\cookie\MIDdleware\AddQueuedcookiesToResponse->handle(Object(Illuminate\http\Request),Object(Closure))#10 /home/forge/default/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.PHP(124): call_user_func_array(Array,Array)#11 /home/forge/default/vendor/laravel/framework/src/Illuminate/cookie/MIDdleware/Encryptcookies.PHP(59): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\http\Request))#12 [internal function]: Illuminate\cookie\MIDdleware\Encryptcookies->handle(Object(Illuminate\http\Request),Object(Closure))#13 /home/forge/default/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.PHP(124): call_user_func_array(Array,Array)#14 /home/forge/default/vendor/laravel/framework/src/Illuminate/Foundation/http/MIDdleware/CheckForMaintenanceMode.PHP(42): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\http\Request))#15 [internal function]: Illuminate\Foundation\http\MIDdleware\CheckForMaintenanceMode->handle(Object(Illuminate\http\Request),Object(Closure))#16 /home/forge/default/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.PHP(124): call_user_func_array(Array,Array)#17 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\http\Request))#18 /home/forge/default/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.PHP(103): call_user_func(Object(Closure),Object(Illuminate\http\Request))#19 /home/forge/default/vendor/laravel/framework/src/Illuminate/Foundation/http/Kernel.PHP(122): Illuminate\Pipeline\Pipeline->then(Object(Closure))#20 /home/forge/default/vendor/laravel/framework/src/Illuminate/Foundation/http/Kernel.PHP(87): Illuminate\Foundation\http\Kernel->sendRequestThroughRouter(Object(Illuminate\http\Request))#21 /home/forge/default/public/index.PHP(54): Illuminate\Foundation\http\Kernel->handle(Object(Illuminate\http\Request))#22 {main}

我做错了什么导致iframe不匹配,我该如何解决?

解决方法 Laravel 5启用了一个名为VeryifyCsrftoken的全局 middleware,它检查所有POST请求是否适用于令牌 Cross-site request forgery protection.

Cross-site request forgerIEs are a type of malicIoUs exploit whereby
unauthorized commands are performed on behalf of the authenticated
user.

允许用户从不同域上的iframe提交表单正是Laravels CSRF保护试图阻止的事情.

有一种方法可以禁用某些URL的CSRF验证.您可以向$except数组添加新项目,以从CSRF验证中排除该URL.

http /中间件/ VerifyCsrftoken.PHP

<?PHPnamespace App\http\MIDdleware;use Illuminate\Foundation\http\MIDdleware\VerifyCsrftoken as BaseVerifIEr;class VerifyCsrftoken extends BaseVerifIEr{    /**     * The URIs that should be excluded from CSRF verification.     *     * @var array     */    protected $except = [        'your/uri'    ];}
总结

以上是内存溢出为你收集整理的只有iFrame中的Laravel 5 TokenMismatchException全部内容,希望文章能够帮你解决只有iFrame中的Laravel 5 TokenMismatchException所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1068463.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存