我遇到了一个问题,在这个问题中,漂亮的面孔会导致无限循环,以我的浏览器结束:Firefox has detected that the server is redirecting the request for this address in a way that will never complete.
问题的确切原因
文件结构

漂亮-config.xml片段
<url-mapping id="login">
<pattern value="/login" />
<view-id value="/login/login.xhtml" />
</url-mapping>
<url-mapping id="register">
<pattern value="/register" />
<view-id value="/login/register.xhtml" />
</url-mapping>描述
导航到localhost:8080/register将导致我的网页。导航到localhost:8080/login将导致所描述的循环,注意导航将导致重定向到localhost:8080/login/ <-一个尾随斜杠。
我猜,localhost:8080/login是对文件夹login的请求。但是我不知道如何修复它,所以我对localhost:8080/login的请求将导致网页的出现。
提前谢谢。
发布于 2012-10-29 15:17:35
我唯一的猜测是,您的FacesServlet被映射到*.xhtml,所以在处理请求时,首先您的files过滤器将它转发给FacesServlet,但是,由于xhtml文件在路径中,所以files过滤器将再次无限地处理前向。
要解决这个问题,请将视图放在WEB文件夹中,并在pretty.config.xml中放置如下内容:
<url-mapping id="login">
<pattern value="/login/" />
<view-id value="/WEB-INF/views/login.xhtml" />
</url-mapping>这样,过滤器截获的路径与servlet不同,因为客户端可以请求WEB-INF文件夹中的资源。
发布于 2012-10-29 15:54:20
我过去也有这个问题。问题在于您的Servlet容器。如果您请求像/login这样的URL,则容器检查,如果您的web应用程序中有一个名为login的目录。如果是这样的话,它将您重定向到/login/,因为容器认为您想要到达这个目录。如果也有删除尾随斜杠的重写规则,您将看到这样的行为。
我知道这很奇怪,但是tomcat用户列表上的一些人写到,这种行为是按照规范进行的。
因此,唯一的解决方案是要么在映射中将/login更改为/login/,要么将webapp中的登录文件夹重命名。
https://stackoverflow.com/questions/13124111
复制相似问题