每次我尝试从数据库中获取用户的信息时,我都会收到403禁用错误.关于我的下面的代码,每次我按下Ajax测试按钮尝试请求时,它都无法运行并给我一个警报,但是在控制台中也给了我403 Forbidden-error.我不确定它是否与Spring安全性有关?
dob}"/>aram name="id" value="${user.id}"/>aram name="id" value="${user.id}"/>contextpath}/SDP/ajaxTest/' + personId,function(user) {
$('#personIdResponse').text(user.name + ',= username ' + user.username);
})
.fail(function(user){
alert('Could not load user');
});
});
});
用户控制器类:
@RequestMapping("/viewUser")
public String updateUser(Model model,@RequestParam(value = "id",required = false) Integer id) {
User user = useRSService.getUser(id);
model.addAttribute("user",user);
return "settings";
}
@RequestMapping("/ajaxTest")
@ResponseBody
public User ajaxTest(@RequestParam(value = "id",required = false) Integer id) {
User user = useRSService.getUser(id);
return user;
}
最佳答案
它通常由Spring默认的CSRF保护引起.
如果您使用JS代码中的DELETE HTTP请求,则还需要发送CSRF保护标头.
没有必要禁用CSRF保护!如果没有必要,请不要这样做.
您可以通过以下方式轻松添加CSRF AJAX / REST保护:
1.将元标题添加到每个页面(使用@ layout.html或其他内容):
Meta name="_csrf" th:content="${_csrf.token}"/>
<Meta name="_csrf_header" th:content="${_csrf.headerName}"/>
2.自定义您的ajax请求,以便为每个请求发送这些标头:
$(function () {
var token = $("Meta[name='_csrf']").attr("content");
var header = $("Meta[name='_csrf_header']").attr("content");
$(document).ajaxSend(function(e,xhr,options) {
xhr.setRequestHeader(header,token);
});
});
请注意,我使用百里香,所以我使用th:content而不是content属性.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。