允许跨域请求jersey web服务



面临与允许跨域请求有关的问题。我试图实现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();

相关内容

  • 没有找到相关文章

最新更新