gpt4 book ai didi

java - 在 OSGi 容器中为 Jersey-Grizzly 服务器内的 Rest 服务配置响应对象(使用 Jersey 1x 预防 CORS 错误)

转载 作者:行者123 更新时间:2023-12-02 04:54:50 27 4
gpt4 key购买 nike

这两天,我一直在被一个问题困扰。我创建了一个由 Grizzly 服务器托管在 OSGi 容器内的休息服务。此时一切都运行良好。

现在,我想在每个响应中添加一个 header 。不是那么复杂或不合逻辑吧?然而,我找不到办法做到这一点。

我尝试过:

1) 获取其余函数中的响应对象,如 this question建议(当你不在 OSGi 下时,这是相当不错的教科书)。

2)使用上面的代码添加一个处理程序(在这种情况下,永远不会调用服务方法)

    server.getServerConfiguration().addHttpHandler(
new HttpHandler() {
@Override
public void service(Request arg0, Response arg1)
throws Exception {
arg1.setHeader("Access-Control-Allow-Origin", "*");
}
});

我使用的是 jersey-server/client/core 1.18.1 和 grizzly2-server 1.18.1,因此我更喜欢可以应用于此版本的解决方案,但如果无法完成,我愿意更新 jar 版本在 1.18.x 中。

最佳答案

您可以尝试一下 Jersey 过滤器。
简而言之,您应该创建实现 ContainerResponseFilter 的类:

public class MyFilter implements ContainerResponseFilter {

@Override
public void filter(
ContainerRequest request,
ContainerResponse response
) throws IOException {
request.getHttpHeaders().add(<header name>, <header value>);
}
}

然后,您应该在 Jersey 服务器配置中注册此过滤器。
请注意,每个响应都会调用此过滤器。要将其仅绑定(bind)到特定资源,您可以使用注释绑定(bind),如here所述。 .
您可以找到的所有其他信息 here .

关于java - 在 OSGi 容器中为 Jersey-Grizzly 服务器内的 Rest 服务配置响应对象(使用 Jersey 1x 预防 CORS 错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28894430/

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