指定的HTTP方法不允许对所请求的资源(jquery的POST到弹簧)(The specified

2019-10-22 19:19发布

使用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();
}

这里的错误

以下是该请求头

Answer 1:

由于我使用Spring的安全性,CSRF令牌必须包含在POST头。 令牌在页面上隐藏字段自动生成。 这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());
    }
});


文章来源: The specified HTTP method is not allowed for the requested resource (jquery POST to spring)
标签: spring-mvc