gpt4 book ai didi

resteasy - ContainerResponseFilter 不起作用

转载 作者:行者123 更新时间:2023-12-03 17:07:39 29 4
gpt4 key购买 nike

在带有 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");
}

}

在我看来,这是一个 Wildfly/resteasy 错误。你有其他想法/我错过了什么吗?

最佳答案

你在混ContainerRequestFilterContainerResponseFilter在你的问题中。当您想向客户端发送额外的 header 时,ContainerResponseFilter是正确的。

@PreMatching注释可以应用于 ContainerRequestFilter “指示在实际资源匹配发生之前,应在应用程序中的所有资源上全局应用此类过滤器”。

将其添加到 ContainerResponseFilter没有意义。只需删除注释,您的过滤器就可以工作了。

关于resteasy - ContainerResponseFilter 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25591140/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com