我希望能够无限制地访问Web服务器根目录(欢迎页面),但是 - 默认情况下 - 限制访问所有解析为子文件夹的URL。
我遇到的问题是,当使用/或/ *限制访问作为限制访问的默认匹配时,根文件夹不能再不受限制了。在根上有默认的'index.html',我想在访问域名时出现。任何建议都表示赞赏。
顺便说一下,我正在使用jetty 6.1.6
这是我的web.xml文件的片段:
<servlet-mapping>
<servlet-name>SomeServlet</servlet-name>
<url-pattern>/servlet1</url-pattern>
</servlet-mapping>
<security-constraint>
<web-resource-collection>
<web-resource-name>ForbidDefaultAccess</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint/>
</security-constraint>
<security-constraint>
<web-resource-collection>
<!-- unauthorized -->
<web-resource-name>GrantAccess</web-resource-name>
<url-pattern>/some_dir/*</url-pattern>
<url-pattern>/servlet1</url-pattern>
<url-pattern>/</url-pattern>
</web-resource-collection>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>AuthorizedResources</web-resource-name>
<url-pattern>/cfg/*</url-pattern>
<url-pattern>/fileupload/*</url-pattern>
<url-pattern>/list/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>UserRole</role-name>
</auth-constraint>
</security-constraint>
提前致谢
答案 0 :(得分:3)
Java J2EE 6中可以使用白名单
<security-constraint>
<web-resource-collection>
<web-resource-name>Disable unneeded HTTP methods by 403 Forbidden them</web-resource-name>
<url-pattern>*</url-pattern>
<http-method-omission>GET</http-method-omission>
<http-method-omission>HEAD</http-method-omission>
<http-method-omission>POST</http-method-omission>
</web-resource-collection>
<auth-constraint />
</security-constraint>
参考:https://blogs.oracle.com/nithya/entry/new_security_features_in_glassfish
答案 1 :(得分:0)
您可以创建Filter
,应用于所有网址。让它检查URL的深度(基本上是斜杠的数量),并相应地允许或拒绝访问资源,在第一种情况下使用chain.doFilter()
,在第二种情况下使用HTTP 403 error
。