【发布时间】:2015-12-13 10:02:29
【问题描述】:
如何在不更改源代码(带注释的类或 beans.xml)的情况下配置 Apache CXF CrossOriginResourceSharingFilter?
在JAX-RS: CORS example 中配置是硬编码的:
这里是测试代码,展示了如何在资源和单个方法级别应用 CrossOriginResourceSharing 注释。
[...]
@GET @CrossOriginResourceSharing( allowOrigins = { "http://area51.mil:31415" }, allowCredentials = true, exposeHeaders = { "X-custom-3", "X-custom-4" } ) @Produces("text/plain") @Path("/annotatedGet/{echo}") public String annotatedGet(@PathParam("echo") String echo) { return echo; }
我使用 beans.xml 来配置 allowOrigins 属性:
<bean id="cors-filter" class="org.apache.cxf.rs.security.cors.CrossOriginResourceSharingFilter">
<property name="allowOrigins">
<list>
<value>myserver1</value>
<value>myserver2</value>
</list>
</property>
</bean>
我以为我可以从 JNDI 获取该属性,但不允许添加 List(请参阅 Servlet Specification 2.5)。我需要一种方法来为 CORS * 配置一个空的 List。
<bean id="cors-filter"
class="org.apache.cxf.rs.security.cors.CrossOriginResourceSharingFilter">
<property name="allowOrigins"><
<jee:jndi-lookup jndi-name="CORS/origins"/>
</property>
</bean>
在可重用 WAR 中配置 CrossOriginResourceSharingFilter 的预期/首选方式是什么?
【问题讨论】:
标签: java spring cors jax-rs cxf