我一直在寻找这个问题,但仍然无法避免。 问题只有在我尝试进行ajax调用时才会出现。系统将返回错误git revert
基于Spring MVC and CSRF Integration,我需要包含@EnableWebSecurity来解决这个问题,如果我使用的是Java Config,但是如果使用XML,则需要使用它:
Could not verify the provided CSRF token because your session was not found.
而且我不确定如何使用上面的课程。
问题是如果它真的是一个解决方案或者我可以使用任何解决方案,如何使用上面的类?
这是我的安全配置xml文件;
@RestController
public class CsrfController {
@RequestMapping("/csrf")
public CsrfToken csrf(CsrfToken token) {
return token;
}
}
此外,我是一个类似于CA Siteminder的使用系统,它将根据没有登录表单的标题信息验证用户。
答案 0 :(得分:1)
Spring需要在每个表单提交上发送csrf标记。为此,可以将以下代码插入JSP:
<form>
[...]
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
[...]
</form>
祝你好运
答案 1 :(得分:0)
这是答案!
好的,从其他问题来看,确实有相同的原因,主要是它会影响使用Rest
,header
而没有表单登录的系统。这意味着webapp在容器系统中。因此,容器和系统在容器中的位置在客户端完全不同。
以下是示例..
对于容器webapp:
www.myweb.com/main/
对于容器中的webapp:
www.myweb.com/main/child
这种不同将拒绝访问并给出403,因为我们正在查看的确不存在那里。
示例:
www.myweb.com/main/child/playground
/playground
uri存在于那里,但肯定是禁止的:
www.myweb.com/main/playground
所以请检查你的uri并尝试确保你使用相对路径。它好多了。
P / s:出于某种原因,从服务器端调用的所有内容都保持完整,无论容器还是容器中的系统。这是因为服务器端使用相对路径,而不是绝对路径。
答案 2 :(得分:0)
我&#39; SO的新手,这是我的第一个答案,所以请耐心等待。 这是在使用jQuery时执行AJAX调用之前必须完成的事情:
$(document).ready(
function() {
var token = $("meta[name='_csrf']").attr("content");
$.ajaxSetup({
headers : {
"X-CSRF-Token" : token
}
});
});