我正在尝试通过创建一个小型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项目.