遇到AJAX使用POST请求,出现403错误,经过研究发现,是由于csrf导致的。
解决方案如下:
本次使用的Thymeleaf 模板,在表单中使用 “<form th:action”,将在页面自动生成 <input name="_csrf",如:
ajax应当如下写:
// 获取 token
var token = $("input[name='_csrf']").val();
// 获取省份的id
var provincecode = $(".form-group #oneProvince").children("option:checked").attr("value");
var data = {"provincecode" : provincecode};
var headers = {"X-CSRF-TOKEN": token}
// 获取项目路径
var projectUrl = createProjectUrl();
var url = projectUrl + "/getData";
$.ajax({
type: "POST",
dataType: "json",
url: url,
data: data,
headers:headers,
success: function (response) {
// 添加城市的 multi select
var status = response.status;
if(status=="SUCCESS"){
var result = response.result;
removeAndCreateMultipleCitySelect(result)
}else {
console.error("Ajax Exception: " + url);
}
}
});