0

我们在 JBoss 5.1 上有一个带有 RichFaces 3.3.3 的 JSF 1.2 应用程序。当我们重新启动服务器并在应用程序中首次登录时,我们将被重定向到以下 URL 上的空白页面

https://our.domain.com/a4j/s/3_3_3.Finalorg/richfaces/renderkit/html/css/extended_classes.xcss/DATB/eAF7sqpgb-jyGdIAFrMEaw__

它仅在重新部署和重新启动服务器后的第一次登录时发生。第二次登录,从那时起它工作正常。

这是如何引起的,我该如何解决?

4

2 回答 2

1

容器管理的身份验证将自动重定向到触发身份验证检查的第一个 HTTP 请求。

它重定向到 CSS 文件只能意味着实际页面是从浏览器缓存而不是直接从服务器请求的,而 CSS 文件是直接从服务器请求的,无论是完全还是通过条件 GET。

您需要解决 2 个问题:

  1. 创建一个过滤器,告诉浏览器不要缓存受限页面。将此过滤器映射到与安全约束相同的 URL 模式。这样浏览器将永远不会从缓存中请求它们。这是通过在响应中设置以下标头来完成的

    response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
    response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
    response.setDateHeader("Expires", 0); // Proxies.
    
  2. 从身份验证检查中排除 CSS/JS/图像等静态资源。在这些资源的 URL 模式上添加另一个允许所有安全约束,例如/a4j/*/resource/*/static/*等或您拥有的任何内容。这样,服务器将永远不会对这些请求进行身份验证。

于 2012-06-08T15:34:52.320 回答
0

你能发布你的 web.xml 文件吗?如果可能,请尝试将丰富面孔 jar 中的 css 外部化。似乎在第一次加载 css 时出现了一些异常或者花费了太多时间。发布您的 web.xml

于 2012-06-08T15:19:13.727 回答