允许跨域请求到泽西网络服务

时间:2015-09-25 16:32:52

标签: java web-services rest jersey cross-domain

面临与在球衣中允许跨域请求相关的问题。 我尝试实现com.sun.jersey.spi.container.ContainerResponseFilters,但无法配置它。

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

  

org.apache.catalina.core.StandardWrapperValve调用SEVERE:   用于servlet [JAX-RS Servlet]的Servlet.service()与路径的上下文   [/ crawlerweb]抛出异常[Servlet执行抛出异常]   根本原因java.lang.AbstractMethodError:   javax.ws.rs.core.UriBuilder.uri(Ljava /郎/字符串;)Ljavax / WS / RS /型芯/ UriBuilder;   在javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:119)at   com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.j AVA:662)

1 个答案:

答案 0 :(得分: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();