2015-09-25 73 views
0

面临的问题涉及允许泽西岛的跨域请求。 我试图执行com.sun.jersey.spi.container.ContainerResponseFilters,但无法对其进行配置。允许跨领域请求泽西网络服务

尝试从浏览器发送请求时发生异常。

org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [JAX-RS Servlet] in context with path [/crawlerweb] threw exception [Servlet execution threw an exception] with root cause java.lang.AbstractMethodError: javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String;)Ljavax/ws/rs/core/UriBuilder; at javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:119) at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.j‌​ava:662)

+0

从评论新增电子邮件内容。大多数用户不阅读评论,评论可以在SO上删除。因此,请通过单击编辑 – Panther

+0

始终考虑[编辑]常见信息问题。请勿混用Jersey 1.x和Jersey 2.x或JAX-RS 1.x和JAX-RS 2.x依赖项。这是你的问题的原因。选择一个版本,并坚持下去。摆脱其他的东西 –

+0

感谢您的回复,我尝试 – Jagdeep

回答

0

您必须在球衣服务中实现对CORS的支持。 对于跨域请求,浏览器首先使用OPTIONS方法发送预检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();