gpt4 book ai didi

java - 当我将 PUT 方法与 Spring Security 一起使用时,CSRF token 'null' 无效

转载 作者:太空宇宙 更新时间:2023-11-04 13:34:01 24 4
gpt4 key购买 nike

这是我的 JavaScript。我正在尝试发送 PUT 消息编辑。

$.ajax({
url: "/questions/" + _questionId + "/answers/" + answerId + "/edit",
method: "put",
data: {
id : answerId,
body : body,
"${_csrf.parameterName}": "${_csrf.token}"
}

这是服务器代码。

@ResponseBody
@PreAuthorize("hasAuthority('ADMIN') or principal == #answer.content.user")
@RequestMapping(value = "/questions/{questionId}/answers/{answerId}/edit", method = PUT)
void editAnswer(@PathVariable(value = "questionId") Question question, @AuthenticationPrincipal CurrentUser currentUser,
AnswerForm answerForm, @PathVariable("answerId") String answerId) {

answerService.edit(answerForm, currentUser.getUser());
}

Controller 是PUT方法

当我尝试使用 POST 方法时,它有效。但我只是改变方法(PUT)服务器和客户端。无效的 CSRF token “null”,在浏览器控制台上禁止使用 403。

帮助。

最佳答案

似乎无法识别 PUT 请求正文中的 CSRF token (Servlet 容器不会从 PUT 请求正文生成参数映射)。

但您可以将其发送为 HTTP header :

$.ajax({
url: "/questions/" + _questionId + "/answers/" + answerId + "/edit",
method: "put",
headers: { "${_csrf.parameterName}": "${_csrf.token}" },
data: {
id : answerId,
body : body,
}
});

关于java - 当我将 PUT 方法与 Spring Security 一起使用时,CSRF token 'null' 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31875305/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com