由于只知道AJAX要CSRF验证,但是系统从5.4升级到5.5出问题,5.4下一切正常,5.5却出现419错误。
发现js代码里写的全部如下,都是一些配置项,因为5.4版本下都正常也没有多想这些代码,最终还是这里出问题了
"lengthMenu": [ [10, 20, 50, 100, 150, -1], [10, 20, 50, 100, 150, "All"] // change per page values here ], "pageLength": 10, // default record count per page "ajax": { "url": ajax_url, // ajax source },
最后在ajax配置项里加上了
"headers": { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }
或者:
headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }
或者从表单获取
headers : { 'X-CSRF-TOKEN': $("input[name='_token']").val() },
根据实际情况配置,有的是加引号,有的不加引号,
即:
"ajax": { "url": ajax_url, // ajax source "headers": { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } },
一下子,就把419错误解决了。以下是终极解决方案,只要出现laravel出现419错误,就先去检查CSRF,
FORM表单,记得加{{ csrf_field()}}