使用Spring MVC 4.
这是我的jQuery POST调用:
$.post("<c:url value="/class/addCourse" />/" + d.classID + "/" + d.courseID);
这是我的控制器
@RequestMapping(value = "/class/addCourse/{classID}/{courseID}", method = RequestMethod.POST)
public @ResponseBody String addCourse(@PathVariable String classID, @PathVariable String courseID) {
StringBuilder sb = new StringBuilder();
try{
Class c = classServ.findOne(classID);
c.Courses.add(courseServ.findOne(Long.parseLong(courseID)));
sb.append("{success:true}");
} catch (Exception e){
sb.append("{error:\"").append(e.getMessage()).append("\"}");
}
return sb.toString();
}
这是错误
以下是请求的标头
答案 0 :(得分:0)
由于我使用的是Spring Security,因此必须在POST标头中包含CSRF令牌。在页面上的隐藏字段中自动生成令牌。这个AJAX请求有效:
$.ajax({
type: "POST",
url: "${pageContext.request.contextPath}/class/addCourse/" + d.classID + "/" + d.courseID,
beforeSend: function (xhr) {
xhr.setRequestHeader('X-CSRF-Token', $("input[name=_csrf]").val());
}
});