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改如何做开发呢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
同意楼上的说法. api接口你为什么要做跨站验证?
所谓 csrf就是跨站请求, api就是给跨站请求,你还要禁止.是不是矛盾?
在中间件文件夹下的VerifyCsrfToken填写哪些地址不验证csrf就可以了
class VerifyCsrfToken extends BaseVerifier
有时候你可能希望设置一组并不需要 CSRF 保护的 URI。例如,如果你正在使用 Stripe 处理付款并使用了他们的 webhook 系统,你会需要将 Stripe webhook 处理的路由排除在 CSRF 保护外,因为 Stripe 并不知道发送给你路由的 CSRF 令牌是什么。
一般地,你可以把这类路由放到 web 中间件外,因为 RouteServiceProvider 适用于 routes/web.php 中的所有路由。不过如果一定要这么做,你也可以将这类 URI 添加到 VerifyCsrfToken 中间件中的 $except 属性来排除对这类路由的 CSRF 保护:
CSRF 白名单
你们都没有理解提问者的意思吧, 提问者的意思是app 或者前后端分离的架构,在向后端发请求时如何 携带 laravel 后端生成的token
既然是给外站的接口本身就是跨站的了,怎么可能验证CSRF(Cross-site request forgery),从字面就能理解吧。disable的方法,把CSRF设为route-specific middleware,或者别的,好久没用laravel了,看看文档应该有办法。