我尝试使用新的CorsFilter
Resteasy 3.0.9 中提供了该功能。我在本页底部找到了一个示例:使用 JAX-RS/RESTEasy 实现 CORS 的 Ajax 请求
如果我在方法中定义这个过滤器getSingletons()
(的Application
subclass) ,那么我的资源就不再被扫描。这意味着找不到资源并出现以下错误:
javax.ws.rs.NotFoundException: Could not find resource for full path Error Occures
在下一页上我找到了描述:javax.ws.rs.NotFoundException:无法找到完整路径的资源发生错误
但基本上,此部署选项的作用是扫描应用程序的 @Path、@Provider 等注释。原因是 JAX-RS 将首先分别在重写的 getClasses() 和 getSingletons() 中查找类和对象。如果返回空集,这会告诉 JAX-RS 进行扫描(根据规范)。
因此,如果我覆盖,JAX-RS 不会进行扫描getSingletons()
方法?有没有其他方法来配置这个CorsFilter
并启用资源扫描`?
“还有其他方法来配置此 CorsFilter 并启用资源扫描吗?”
保持扫描的一种方法就是实施javax.ws.rs.core.Feature
import javax.ws.rs.core.Feature;
import javax.ws.rs.core.FeatureContext;
import javax.ws.rs.ext.Provider;
import org.jboss.resteasy.plugins.interceptors.CorsFilter;
@Provider
public class CorsFeature implements Feature {
@Override
public boolean configure(FeatureContext context) {
CorsFilter corsFilter = new CorsFilter();
corsFilter.getAllowedOrigins().add("*");
context.register(corsFilter);
return true;
}
}
该功能将像所有其他功能一样被扫描@Provider
s and @Path
s.
仅测试
@ApplicationPath("/api")
public class RestApplication extends Application {
}
C:\>curl -i http://localhost:8080/api/simple -H "Origin:stackoverflow.com"
HTTP/1.1 200 OK
Date: Wed, 01 Apr 2015 12:07:22 GMT
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: stackoverflow.com
Content-Type: application/octet-stream
Content-Length: 15
Server: Jetty(9.2.4.v20141103)
Hello Response!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)