【发布时间】:2015-03-06 06:10:30
【问题描述】:
我的 Spring Boot 应用程序中的 csrf 令牌有问题。
我有一个可以编辑人员的表单。一个人可以拥有
现在让我们假设这个人有一辆车,然后进入并存储它。下次他要删除这辆车并进入另一辆车。我已经创建了这个列表,以便列出他所有的汽车——他可以选择从列表中删除它。现在我从这些药丸开始,想用相应的 ID 向服务器发送一个 POST。当我尝试时,我得到了 403 禁止,我不知道为什么。
如果我从 POST 更改为 GET,那么它可以工作。
我的 JavaScript(取自本网站:http://docs.spring.io/autorepo/docs/spring-security/4.0.0.CI-SNAPSHOT/reference/htmlsingle/#the-csrfmetatags-tag)
var csrfParameter = $("meta[name='_csrf_parameter']").attr("content");
var csrfHeader = $("meta[name='_csrf_header']").attr("content");
var csrfToken = $("meta[name='_csrf']").attr("content");
// using JQuery to send a non-x-www-form-urlencoded request
var headers = {};
headers[csrfHeader] = csrfToken;
$.ajax({
url: "./delete/car",
type: "GET",
headers: headers,
});
$.ajax({
url: "./delete/car",
type: "POST",
headers: headers,
});
我的控制器方法:
@RequestMapping(value = "/{login}/delete/car", method = RequestMethod.GET)
public ModelAndView delete(@PathVariable("login") final String login) {
System.out.println("Stop");
return new ModelAndView("redirect:" + WebSecurityConfig.URL_PERSONS_OVERVIEW);
}
@RequestMapping(value = "/{login}/delete/car", method = RequestMethod.POST)
public ModelAndView deleteInstEmp(@PathVariable("login") final String login) {
System.out.println("Stop");
return new ModelAndView("redirect:" + WebSecurityConfig.URL_PERSONS_OVERVIEW);
}
有什么建议吗?
提前致谢。
【问题讨论】:
-
"/{login}/delete/car", method = RequestMethod.GET这个监听 GET 请求而不是 POST -
抱歉,从我的网站复制粘贴错误。在我看来是对的
标签: java ajax spring spring-mvc csrf