当前位置: 首页 > 知识库问答 >
问题:

OncePerRequestFilter无法设置不同于404的错误代码

梁宪
2023-03-14

我正在尝试使用OncePerRequestFilter在给定条件下对特定URL返回错误401(HttpServletResponse.sc_unauthorization),

但我一直得到未找到的错误:

Response code: 404

我的筛选器(已删除的条件):

@Component
public class MyFilter extends OncePerRequestFilter {

    private static final Logger logger = Logger.getLogger(MyFilter.class);
    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {

            response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Not autorized");           
            response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
            try {
                PrintWriter out = response.getWriter();
                out.write(""); // Empty
                out.flush();
            } catch (IOException e) {
                logger.error("error filtering", e);
            }
            return; // stop chain
    }    
}
Response code: 500

编辑2

我在onstartup方法overridenWebApplicationInitializer中添加筛选器

FilterRegistration myFilter = servletContext.addFilter("myFilter ", MyFilter.class);
myFilter.addMappingForUrlPatterns(null, false, "/myservlet/myendpoint/*");

编辑3

@ComponentScan(basePackages = { "my.parent.pacakge"})

共有1个答案

董庆
2023-03-14

我试过你的代码,它有效。成功返回了不同的错误代码。不过,我想指出几件事-

  1. 方法senderRor()将响应发送到客户端,并清除响应缓冲区。因此,在它之后写到响应中的任何内容都是没有用的。
  2. 调用setstatus()也没有用。当您调用senderroror().
  3. 时,HTTP响应和HTTP响应代码已经在上面的行中发送到客户机

现在,这就是我的假设,为什么你的代码不适合你,但它适合我-

 类似资料:
  • 本文向大家介绍APACHE 自定义404错误页面设置方法,包括了APACHE 自定义404错误页面设置方法的使用技巧和注意事项,需要的朋友参考一下 方法一:   在httpd.conf中设置对目录开启。    AllowOverride All   然后在目录里放一个.htaccess(.htaccess),添加:   errorDocument 404 /404.php 1.这个的内容根据你的情

  • 我是Spring MVC的新手,正在尝试在Spring MVC中创建我的第一个项目。请帮助我解决以下错误:- 控制台中出现以下错误:- web.xml dispatcher-servlet.xml 控制器类别 索引1.jsp Eclipse项目层次结构

  • 本文向大家介绍win8下IIS 8.5下设置404错误页,包括了win8下IIS 8.5下设置404错误页的使用技巧和注意事项,需要的朋友参考一下 IIS版本:IIS 8.5 问题描述 搭建一个测试网站,总共就2个页面(index.php和404.php),默认首页为:index.php 当访问index.php和404.php的时候,IIS服务器能正常响应,说明在IIS 8.5中配置PHP环境没

  • 问题内容: 建立: 看一下我的配置: 您可以看到我已经为设置了路径。另外,我创建了可能不需要的子目录。 题: 为什么以下命令生成此错误消息? 问题答案: 如果您设置这样的变量: 它将不会导出到任何子流程。仅适用于该过程。如果要将其导出到子流程,请使用: 您还可以结合分配和导出:

  • 组织。喷气式飞机。插件。格拉德尔。设置。无法将渐变设置转换为组织。喷气式飞机。插件。格拉德尔。设置。尝试构建新项目时发生渐变设置错误 我手动下载http://services.gradle.org/distributions/gradle-1.6-bin.zip并将zip内容复制到C:\Program Files(x86)\Android\android-dios\plugins\gradle文件

  • 我想上传两个视频和一些文本字段到改造库使用多部分发布方法,如何使用android改造库发送值 API接口 ResponsePoja模型类 波纹管发送按钮点击方法,当我点击时上传所有数据保存到服务器 邮递员发送请求方法