时间:2021-05-26
从Laravel 5.3+开始,API路径被放入了routes/api.php中。我们绝大多数的路径其实都会在web.php中定义,因为在web.php中定义的路径默认有CSRF保护,而API路径默认没有CSRF保护。在Laravel官网文档中写到:/p>
Any HTML forms pointing to POST, PUT, or DELETE routes that are defined in the web routes file should include a CSRF token field. Otherwise, the request will be rejected.
所以,请注意你页面的表单中是否使用了POST、PUT或DELETE方法,如果有,并且你没有在表单中添加相应的CSRF token时,你的请求将会失败。
有时候,我们可能不想要CSRF保护。比如我们想使用第三方软件测试表单提交,或者比如微信公众号接口的开发时,当微信服务器使用POST推送给我们消息时,如果开启了CSRF保护,那么请求肯定是失败的。
在这样的情况下,我们可以使用API路径来取消CSRF保护。
我们有两种办法来定义API Routes。
将routes放进VerifyCsrfToken这个middleware的$except数组里:
<?php namespace 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 = [ '/api/my-route', ]; }以上middleware的位置在app/Http/Middleware文件夹中。
将routes放进api.php里:
<?php use Illuminate\Http\Request; Route::middleware('auth:api')->get('/user', function (Request $request) { return $request->user(); }); Route::get('/wechat', 'WechatAPIController@some-method'); Route::post('/wechat', 'WechatAPIController@some-other-method');api.php和web.php同处于routes文件夹下。
在api.php中添加的路径,在访问时,我们需要在路径前,加上api/前缀:
//www.jb51.net/api/wechat
好了,这样一来,我们就完成了API路径的定义,或者换句话说,取消了路径的CSRF保护。
本文主要讲解了Laravel框架定义API路径取消CSRF保护的操作方法,更多关于Laravel框架的使用技巧请查看下面的相关链接
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
如下所示:这个是因为laravel自带CSRF验证的问题解决方法方法一:去关掉laravel的csrf验证,但这个人不建议,方法也不写出来了。方法二:把该接口写
本文实例讲述了laravel框架中表单请求类型和CSRF防护。分享给大家供大家参考,具体如下:laravel中为我们提供了绑定不同http请求类型的函数。Rou
前言本文介绍的是laravel5.3中自定义加密服务的方案,利用laravel的服务容器,实现自定义加密服务注册(示例是支持长字符串的RSA加密),下面来看看详
准备学习php框架Laravel,但PHP版本要求5.4+,目前用的wamp默认版本5.3,所以准备使用xampp,以下为记录卸载wamp,略过>ps:注意卸载
本文实例讲述了Laravel框架实现的上传图片到七牛功能。分享给大家供大家参考,具体如下:新建项目这里直接用一个新的Laravel5.3的项目进行演示,其他版本