首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当我将PUT方法与Spring Security一起使用时,CSRF标记'null‘无效

当我将PUT方法与Spring Security一起使用时,CSRF标记'null‘无效
EN

Stack Overflow用户
提问于 2015-08-07 18:15:05
回答 2查看 323关注 0票数 1

这是我的javascript。我正在试着发送PUT消息编辑。

代码语言:javascript
运行
复制
$.ajax({
        url: "/questions/" + _questionId + "/answers/" + answerId + "/edit",
        method: "put",
        data: {
            id : answerId,
            body : body,
            "${_csrf.parameterName}": "${_csrf.token}"
        }

这是服务器代码。

代码语言:javascript
运行
复制
@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标记'null‘,在浏览器控制台上禁止使用403。

帮助。

EN

Stack Overflow用户

发布于 2015-08-07 18:50:14

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

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

代码语言:javascript
运行
复制
$.ajax({
    url: "/questions/" + _questionId + "/answers/" + answerId + "/edit",
    method: "put",
    headers: { "${_csrf.parameterName}": "${_csrf.token}" },
    data: {
        id : answerId,
        body : body,
    }
});
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31875305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档