You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JSF 3.0升级后资源加载异常及登录HTTP 400问题求助

排查建议

1. 排查JSESSIONID Cookie兼容性问题

Tomcat 10.1(基于Jakarta EE 9)的Cookie默认配置与Tomcat 8差异较大,尤其是SameSite属性和HttpOnly规则。清除缓存后首次请求无Cookie,服务器生成的JSESSIONID可能因浏览器不兼容新Cookie规则,无法被正确携带或解析,触发400错误:

  • 检查Tomcat conf/context.xml的CookieProcessor配置,将sameSiteCookies设为Lax(本地应用场景优先),示例:
    <CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
                     sameSiteCookies="Lax"/>
    
  • 核对Spring Security的Session配置,避免sessionCreationPolicy或cookieConfig与Tomcat的Cookie规则冲突。

2. 确认JSF资源Servlet初始化顺序

Jakarta EE 9下,jakarta.faces.webapp.FacesServlet若未提前初始化,首次请求时无法解析/jakarta.faces.resource/**路径的资源请求,导致解析错误或被Spring Security拦截:

  • 在web.xml中给FacesServlet设置load-on-startup为1,强制服务器启动时初始化:
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>jakarta.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    
  • 更新Spring Security拦截规则,明确放行/jakarta.faces.resource/**路径,而非仅/**/*.jsf:
    <security:intercept-url pattern="/jakarta.faces.resource/**" access="permitAll"/>
    

3. 检查Spring Security CSRF配置

清除缓存后首次请求无CSRF Token,若Spring Security默认开启CSRF保护,POST登录请求会因缺少Token返回400;二次请求时页面已渲染Token,提交时携带则成功:

  • 确认登录页的<h:form>标签是否自动生成CSRF Token(Jakarta EE 9的JSF默认支持),查看页面源码是否包含jakarta.faces.ViewState或CSRF相关隐藏字段。
  • 临时关闭CSRF保护测试(仅用于排查):
    <security:csrf disabled="true"/>
    
    若首次登录成功,说明问题出在CSRF Token的生成或传递环节。

4. 验证Java 17模块权限与资源加载

Java 17的JPMS模块系统可能限制Web应用的资源加载权限,首次请求时权限未初始化导致错误:

  • 检查项目是否存在module-info.java,确保已正确声明对Jakarta EE相关模块的依赖,比如:
    requires jakarta.faces;
    requires jakarta.servlet.api;
    
  • 查看Tomcat的catalina.log和localhost.log,排查是否有java.lang.SecurityException或模块权限相关的警告。

5. 对比首次/二次请求的请求头与响应细节

通过浏览器开发者工具对比两次请求的差异:

  • 检查首次请求是否缺少Cookie头,二次请求是否携带了有效的JSESSIONID。
  • 查看400错误的响应内容,Tomcat通常会返回具体原因(如"Invalid session ID"、"Missing CSRF token")。
  • 核对两次请求的Accept、User-Agent等请求头,确认是否触发服务器的特殊验证逻辑。

内容的提问来源于stack exchange,提问作者tz007

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 14:25:24