如何在 Jersey 中使用 ContainerResponseFilter 允许 CORS 的多个域。?
Posted
技术标签:
【中文标题】如何在 Jersey 中使用 ContainerResponseFilter 允许 CORS 的多个域。?【英文标题】:How to allow multiple domains for CORS with ContainerResponseFilter in Jersy.? 【发布时间】:2017-11-23 04:12:24 【问题描述】:我正在使用 JAX-RS jersey 实现来实现 RESTful Web 服务。 我想允许多个域访问我的网络服务,但不是全部。 目前我已经编写了下面的代码,只允许一个域用于 CORS。 谁能解释我如何在泽西岛实现中允许特定的多个域。?
public class CORSResponseFilter implements ContainerResponseFilter
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException
MultivaluedMap<String, Object> headers = responseContext.getHeaders();
headers.add("Access-Control-Allow-Origin", "www.xxxxx.com");
headers.add("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
headers.add("Access-Control-Allow-Headers", "X-Requested-With, Content-Type, X-Codingpedia");
【问题讨论】:
【参考方案1】:动态设置标头值。有一个您想要允许的预定义来源列表。在 filter 方法中,从请求上下文中获取 Origin
标头。这将具有请求的原始域。对照允许的来源列表进行检查。如果它在列表中,则将 Origin
标头中的域作为允许的来源。如果它不在那里,抛出一个ForbiddenException
说来源是不允许的。
【讨论】:
以上是关于如何在 Jersey 中使用 ContainerResponseFilter 允许 CORS 的多个域。?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Jersey 中使用 ContainerResponseFilter 允许 CORS 的多个域。?