面临与允许跨域请求有关的问题。我试图实现com.sun.jersey.spi.container.ContainerResponseFilters
,但无法配置它。
尝试从浏览器发送请求时出现异常。
org.apache.catalina.core。StandardWrapperValve调用SEVERE:servlet .service()用于上下文中的servlet [JAX-RS servlet][/crawlerweb]抛出异常[Servlet执行抛出异常]java.lang.AbstractMethodError:javax.ws.rs.core.UriBuilder.uri (Ljava/lang/String;) Ljavax/ws/rs/核心/UriBuilder;(UriBuilder.java:119com.sun.jersey.spi.container.servlet.ServletContainer.service (ServletContainer.j艾娃:662)
您必须在jersey服务中实现对CORS的支持。对于跨域请求,浏览器首先发送一个带有OPTIONS方法的preflight httprequest。然后你的服务器必须在响应中返回特定的CORS标头。
Access-Control-Allow-Origin :*
Access-Control-Allow-Methods: GET, POST
浏览器检查这些报头,如果它们存在,那么它会生成你想要的真正的httprequest。
你可以试试这个
return Response.ok()
.entity(podcastById, detailed ? new Annotation[]{PodcastDetailedView.Factory.get()} : new Annotation[0])
.header("Access-Control-Allow-Origin", "*")
.header("Access-Control-Allow-Methods", "GET, POST")
.allow("OPTIONS").build();