java在websphere中将响应代码403替换为404
“https://mywebsite.com/contextroot/basic.html”
上面的url工作正常,因为我的项目有基本的。“deployedResources/webapp”下的html
但是当我以“https://mywebsite.com/contextroot/basic.html/”的形式输入url时
我得到403禁止,在这里我添加了“/”的网址
当一些人向url添加“/”时,如何使服务器将响应代码“403禁止”替换为“404未找到页面”
我们在项目中使用websphere、jsp和servlet
# 1 楼答案
对于WebSphere中的这种情况,web容器使用HttpServetResponse发送403响应代码。sendError(int,String)方法。因此,您可以使用过滤器和HttpServletResponseWrapper修改响应代码。过滤器用HttpServletResponseWrapper替换响应对象,然后覆盖sendError方法。例如,此HttpServletResponseWrapper:
它通过此筛选器添加到请求处理中:
注:
筛选器urlPatterm必须为/*以确保为错误请求调用它。如果模式是。html将不会为错误请求调用筛选器,“.html/”不是有效的URL模式
如果请求是针对以“html/”结尾的资源,则响应包装器将覆盖sendError方法,并将403响应代码更改为404,否则将其保持原样。然而,“html\”的测试有些简单,因为您可能需要它来处理其他静态文件类型或其他类似情况,在这些情况下对于静态文件请求,webcontainer将返回403。基本上,在以下条件下,静态文件请求会得到403:
但是,过滤器的难点在于确保其不会更改响应代码,例如,对于路径以“/”结尾的servlet请求,因为这样的请求是有效的。因此,简单地测试以“/”结尾的请求路径过于笼统,在设置测试时必须了解应用程序打算提供哪些静态资源
# 2 楼答案
尝试将此添加到您的web。xml
并创建错误404。html文件