这个是因为laravel自带CSRF验证的问题
解决方法
方法一:去关掉laravel的csrf验证,但这个人不建议,方法也不写出来了。
方法二:把该接口写到api.php上就好了
方法三:
首先在页面加上
1 | <meta name="csrf-token" content="{{ csrf_token() }}" /> |
然后请求的在header里面加上
1 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') |
就ok了
方法四:页面上加上代码{{csrf_field()}},如果是form表单提交的话直接加上就ok了,不是form的话ajax请求的时候写到请求参数里增加参数_token并获取{{csrf_field()}}的值,然后请求就好了
var name=$('#name').val(); $.ajax({ type:'POST', url:"{{route('rule.add')}}", dataType:'json', data:{ 'name':name, '_token':'{{csrf_token()}}' }, success:function(data,sta){ if(data.code==200){ layer.alert('添加成功',function(){ }); }else{ layer.alert('添加失败',function(){ }); } }, error:function(data){ console.log(data) } }); |
以上这篇解决laravel 出现ajax请求419(unknown status)的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
通过获取隐藏的input标签中的csrfmiddlewaretoken值,放置在data中发送。
通过获取返回的cookie中的字符串,放置在请求头中发送。
注意: 需要引入一个jquery.cookie.js插件。
或者用自己写一个getCookie方法:
每一次都这么写太麻烦了,可以使用$.ajaxSetup()方法为ajax请求统一设置。
注意:
如果使用从cookie中取csrftoken的方式,需要确保cookie存在csrftoken值。
如果你的视图渲染的HTML文件中没有包含{% csrf_token %}, Django可能不会设置CSRFtoken的cookie。
这个时候需要使用ensure_csrf_cookie()装饰器强制设置Cookie。
__EOF__
作 者:BNDong
出 处:https://www.cnblogs.com/yang-wei/p/10009106.html
关于博主:编程路上的小学生,热爱技术,喜欢专研。评论和私信会在第一时间回复。或者直接私信我。
版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本。
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!