springboot ajax 提交403错误

来源:互联网 发布:js 2的指数 编辑:程序博客网 时间:2024/06/17 20:33
由于开启了csrf 我用ajax post上传图片出现了403错误
$('#input-app-icon').change(function () {    var formdata = new FormData();    var v_this = $(this);    var fileObj = v_this.get(0).files;    formdata.append("file", fileObj[0]);    jQuery.ajax({        url: '/upload',        type: 'post',        data: formdata,        cache: false,        contentType: false,        processData: false,        dataType: "text",        success: function (data) {        },        error: function (data) {        }    });});
解决办法一、
配置中加入排除csrf的地址
private CsrfSecurityRequestMatcher csrfSecurityRequestMatcher() {    CsrfSecurityRequestMatcher csrfSecurityRequestMatcher = new CsrfSecurityRequestMatcher();    List<String> list = new ArrayList<String>();    list.add("/druid");    list.add("/upload");
    list.add("/ueditorcontrol");
    csrfSecurityRequestMatcher.setExecludeUrls(list);    return csrfSecurityRequestMatcher;}
解决办法二、
AJAX请求发送前执行函数。Ajax事件。

XMLHttpRequest对象和设置作为参数传递给回调函数

$(document).ajaxSend(function(evt,request,settings){})是全局事件,也就是说,

只要该页面定义了这个函数,那么,在每个ajax请求前都会执行该函数

var token = $("meta[name='_csrf']").attr("content");var header = $("meta[name='_csrf_header']").attr("content");$(document).ajaxSend(function(e, xhr, options) {    xhr.setRequestHeader(header, token);});