Cer*_*ber 7 resteasy wildfly-8
在带有REST服务的wildfly 8.1中,我想实现CORS ContainerRequestFilter和ContainerResponseFilter.
我的请求过滤器工作正常但ContainerResponseFilter从未加载或调用
package org.test.rest;
import java.io.IOException;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerResponseContext;
import javax.ws.rs.container.ContainerResponseFilter;
import javax.ws.rs.container.PreMatching;
import javax.ws.rs.ext.Provider;
@Provider
@PreMatching // <-- EDIT : This was my mistake ! DO NOT ADD THIS
public class CorsResponseFilter implements ContainerResponseFilter {
public CorsResponseFilter() {
System.out.println("CorsResponseFilter.init");
}
@Override
public void filter(ContainerRequestContext req,
ContainerResponseContext resp) throws IOException {
System.out.println("CorsResponseFilter.filter");
resp.getHeaders().add("Access-Control-Allow-Origin", "*");
resp.getHeaders().add("Access-Control-Allow-Credentials", "true");
resp.getHeaders().add("Access-Control-Allow-Methods",
"GET, POST, DELETE, PUT");
resp.getHeaders().add("Access-Control-Allow-Headers",
"Content-Type, Accept");
}
}
Run Code Online (Sandbox Code Playgroud)
这在我看来是一个Wildfly/resteasy bug.你有另一个想法/我错过了什么吗?
你在ContainerRequestFilter和ContainerResponseFilter你的问题混在一起.由于您希望向客户端发送其他标头,因此ContainerResponseFilter是正确的.
该@PreMatching注解可以应用到ContainerRequestFilter"表示实际的资源匹配发生之前,这种过滤器应在全球范围内的所有资源在应用程序中应用".
添加到一个ContainerResponseFilter没有意义.只需删除注释,您的过滤器就可以正常工作.
| 归档时间: |
|
| 查看次数: |
5029 次 |
| 最近记录: |