laravel 在做api接口的时候如何验证 X-CSRF-TOKEN


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改如何做开发呢

laravel php Ajax laravel5.1 api认证

库洛。悠太 10 years, 10 months ago

同意楼上的说法. api接口你为什么要做跨站验证?
所谓 csrf就是跨站请求, api就是给跨站请求,你还要禁止.是不是矛盾?

缺舟—帆渡 answered 10 years, 10 months ago

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')
                                  ));

遗湿de美好 answered 10 years, 10 months ago

既然是给外站的接口本身就是跨站的了,怎么可能验证CSRF(Cross-site request forgery),从字面就能理解吧。disable的方法,把CSRF设为route-specific middleware,或者别的,好久没用laravel了,看看文档应该有办法。

谁动了我的囧君 answered 10 years, 10 months ago

Your Answer