【发布时间】:2019-08-26 11:01:18
【问题描述】:
我有多个 (10+) 模块,我想添加对 CORS 的支持。我想只允许(Access-Control-Allow-Origin)我们的组织 prod、test、development、127.0.0.1 和 localhost。
我创建了一个 jax rs ContainerResponseFilter 类,如下所示:
@Provider
public class CorsFilter implements ContainerResponseFilter {
@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException {
String origin = requestContext.getHeaderString("Access-Control-Allow-Origin");
if(!getAllowedOriginList().contains(origin))
throw new ForbiddenException("Not allowed.");
responseContext.getHeaders().add("Access-Control-Allow-Origin", origin);
responseContext.getHeaders().add("Access-Control-Allow-Credentials", "true");
responseContext.getHeaders().add("Access-Control-Allow-Headers", "origin, content-type, accept, authorization");
responseContext.getHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD");
}
private List<String> getAllowedOriginList() {
return Arrays.asList(
"http://localhost:8080",
"127.0.0.1:8080",
"111.123.123.22:8080",
"222.123.123.22:8080",
"333.123.123.22:8080"
);
}
}
问题在于,当您有很多带有此代码的模块并且您需要更新 IP 地址时,您必须进入并更新每个模块中的此过滤器。这对我来说不是一个好选择。我想知道如何将此 IP 地址列表添加到 Wildfly 17 服务器并从每个模块中获取它?最简单的方法是什么?
【问题讨论】:
-
您可以在 WildFly 的 JNDI 上下文中添加列表。
-
@NikosParaskevopoulos 你有一个关于如何做到这一点的例子吗?
标签: jakarta-ee filter jax-rs wildfly