ContainerRequestFilter ContainerResponseFilter不会被调用

 笑眯眯马甲61 发布于 2023-01-15 09:14

我正在尝试通过创建一个小型RESTful服务来学习球衣.我想出于特定原因使用Filters(就像我想使用ContainerResponseFilter for CORS头来允许跨域请求).但是,我只是无法让这些过滤器拦截我的电话.我已经看到了这个问题的所有帖子,他们中的大多数都说要注册注释提供者或web.xml.我已经尝试在web.xml中注册文件以及为@Provider容器提供注释

这是我的web.xml





    
        org.springframework.web.context.ContextLoaderListener
    
    
        contextConfigLocation
        /WEB-INF/classes/spring/config/BeanLocations.xml
    

    
        Jersey Web Application
        com.sun.jersey.spi.container.servlet.ServletContainer
        
            com.sun.jersey.config.property.packages
            com.rest.example
        
          
            jersey.config.server.provider.packages  
            com.rest.example.cors
        
        
            com.sun.jersey.spi.container.ContainerResponseFilters
            com.rest.example.CORSFilter
        
        
            com.sun.jersey.spi.container.ContainerRequestFilters
            com.rest.example.RequestFilter
        

    
    
        Jersey Web Application
        /webresources/*
    


这是我的过滤器:

package com.rest.example.cors;

import javax.ws.rs.ext.Provider;

import com.sun.jersey.spi.container.ContainerRequest;
import com.sun.jersey.spi.container.ContainerResponse;
import com.sun.jersey.spi.container.ContainerResponseFilter;

@Provider
public class CORSFilter implements ContainerResponseFilter {

    public ContainerResponse filter(ContainerRequest creq,
            ContainerResponse cresp) {

             cresp.getHttpHeaders().putSingle("Access-Control-Allow-Origin", "*");
             cresp.getHttpHeaders().putSingle("Access-Control-Allow-Credentials", "true");
             cresp.getHttpHeaders().putSingle("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT, OPTIONS, HEAD");
             cresp.getHttpHeaders().putSingle("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With");

            return cresp;
    }
}


package com.rest.example.cors;

import javax.ws.rs.ext.Provider;

import com.sun.jersey.spi.container.ContainerRequest;
import com.sun.jersey.spi.container.ContainerRequestFilter;

@Provider
public class RequestFilter implements ContainerRequestFilter {

    public ContainerRequest filter(ContainerRequest request) {
        System.out.println("request filter");
        return request;
    }
}

链接到我的github项目.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有