【发布时间】:2011-10-13 17:04:13
【问题描述】:
多年来我一直在使用前缀映射,并决定改用后缀
映射,只是为了真正摆脱网址中的/faces。我只是想
在我给自己挖一个洞之前检查我是否朝着正确的方向前进
发生了一些意想不到的事情。我从这里改变了:
<servlet-mapping>
<servlet-name>FacesServlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
到这里:
<servlet-mapping>
<servlet-name>FacesServlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
然后我看到通过FacesServlet 的所有内容都有.xhtml
附加到它,以便浏览器请求background.png.xhtml 文件,
style.css.xhtml 文件 - 对吗?我想它被称为后缀映射,
但它对我来说看起来有点不整洁,我试图说服自己
要走的路。
在引用 URI 的 CSS 文件中,我还必须附加 .xhtml:
background-image: url(images/background.png.xhtml);
然后我看到一个来自 BalusC 的帖子,它给出了一个解决方案来防止 无需通过 FacesServlet 即可下载资源:
<security-constraint>
<display-name>Restrict raw XHTML docs</display-name>
<web-resource-collection>
<web-resource-name>XHTML</web-resource-name>
<url-pattern>*.xhtml</url-pattern>
</web-resource-collection>
<auth-constraint/>
</security-constraint>
当我添加这个时,只有真正的 .xhtml 文件加载到页面上,所有
其他资源(尽管附加了.xhtml)不显示。
我只想知道:
这是否将
.xhtml附加到一切正常(对不起,如果 最愚蠢的问题)为什么“限制原始 xhtml 文档”安全约束会阻止资源,例如 加载 CSS、JavaScript 和图像?
感谢您的任何反馈。我在 Glassfish 3.1 上使用 Mojarra 2.1.2。
【问题讨论】: