laravel 在开发外部 服务请求的api 接口 ;
在laravel 的ajax 请求中 需要验证 X-CSRF-TOKEN
$.ajax({ type: 'POST', url: _crtA, data: { card : $("input[name='card']").val()}, dataType: 'json', headers: { 'X-CSRF-TOKEN': _Token }, success: function(data){ layer.open({ content: data.msg, time: 2 }, error: function(xhr, type){ layer.closeAll(); alert('500 error!') } });
而 这个 X-CSRF-TOKEN 是laravel 自己生成的;
而外部网站 或者 app 在请求的时候 是没有 laravel 生成的 _token 的
对应这样的 请求接口,laravel改如何做开发呢
既然是给外站的接口本身就是跨站的了,怎么可能验证CSRF(Cross-site request forgery),从字面就能理解吧。disable的方法,把CSRF设为route-specific middleware,或者别的,好久没用laravel了,看看文档应该有办法。
if you want to disable CSRF-protection on some methods, you could use except or only.
$this->beforeFilter('csrf', array('on' => 'post', 'except'=>array('methodName', 'anotherMethod') ));
同意楼上的说法. api接口你为什么要做跨站验证?
所谓 csrf就是跨站请求, api就是给跨站请求,你还要禁止.是不是矛盾?
在中间件文件夹下的VerifyCsrfToken填写哪些地址不验证csrf就可以了
class VerifyCsrfToken extends BaseVerifier
{ /** * 指定从 CSRF 验证中排除的URL * * @var array */ protected $except = [ 'testCsrf' ]; }