HTTP 状态 403 - 预期的 CSRF 令牌未 found.Has session 已过期?
HTTP Status 403 - Expected CSRF token not found.Has session expired?
我有一个 Spring MVC 应用程序,视图层是 jsp based.At 次我收到此错误消息并且此消息是真实的,session 确实 expired.If 我再次登录,一切正常。
我正在使用以下机制发送 CSRF 令牌:
在 head 部分添加了 2 个元标记:
<meta name="_csrf" content="${_csrf.token}" />
<meta name="_csrf_header" content="${_csrf.headerName}" />
在每个 Ajax 调用中,检索令牌和 header:
var token = $("meta[name='_csrf']").attr("content");
var header = $("meta[name='_csrf_header']").attr("content");
然后使用 XMLHttpRequest 发送此 header 和令牌:
$.ajax({
type : "GET",
url : xxx,
beforeSend : function(xhr) {
xhr.setRequestHeader(header, token);
},
complete : function() {
},
success : function(response) {
}
});
这就是大多数 jsp pages.I 尝试在警报消息中捕获令牌的方式,并且它有效。如果 session 已过期,我想将用户重定向到登录页面,该页面将显示用户被重定向的原因。怎么办?
在服务器端 Spring 我们使用了基于 xml 的配置:
<http auto-config="true" use-expressions="true">
...
<csrf/>
</http>
我在 application-security.xml 中添加了以下内容,它解决了这个特定场景的问题,尽管我在其他一些场景中遇到 CSRF 异常:
<http auto-config="true" use-expressions="true">
...
<session-management invalid-session-url="/login">
<concurrency-control expired-url="/login" />
</session-management>
</http>
我有一个 Spring MVC 应用程序,视图层是 jsp based.At 次我收到此错误消息并且此消息是真实的,session 确实 expired.If 我再次登录,一切正常。 我正在使用以下机制发送 CSRF 令牌: 在 head 部分添加了 2 个元标记:
<meta name="_csrf" content="${_csrf.token}" />
<meta name="_csrf_header" content="${_csrf.headerName}" />
在每个 Ajax 调用中,检索令牌和 header:
var token = $("meta[name='_csrf']").attr("content");
var header = $("meta[name='_csrf_header']").attr("content");
然后使用 XMLHttpRequest 发送此 header 和令牌:
$.ajax({
type : "GET",
url : xxx,
beforeSend : function(xhr) {
xhr.setRequestHeader(header, token);
},
complete : function() {
},
success : function(response) {
}
});
这就是大多数 jsp pages.I 尝试在警报消息中捕获令牌的方式,并且它有效。如果 session 已过期,我想将用户重定向到登录页面,该页面将显示用户被重定向的原因。怎么办?
在服务器端 Spring 我们使用了基于 xml 的配置:
<http auto-config="true" use-expressions="true">
...
<csrf/>
</http>
我在 application-security.xml 中添加了以下内容,它解决了这个特定场景的问题,尽管我在其他一些场景中遇到 CSRF 异常:
<http auto-config="true" use-expressions="true">
...
<session-management invalid-session-url="/login">
<concurrency-control expired-url="/login" />
</session-management>
</http>