Java 允许对web服务进行跨域请求

Java 允许对web服务进行跨域请求,java,web-services,rest,jersey,cross-domain,Java,Web Services,Rest,Jersey,Cross Domain,面临与允许泽西岛跨域请求相关的问题。 我试图实现com.sun.jersey.spi.container.ContainerResponseFilters,但无法对其进行配置 尝试从浏览器发送请求时出现异常 org.apache.catalina.core.StandardWrapperValve: Servlet[JAX-RSServlet]的Servlet.service(),位于具有路径的上下文中 [/crawlerweb]引发异常[Servlet执行引发异常] 使用根本原因java.la

面临与允许泽西岛跨域请求相关的问题。 我试图实现
com.sun.jersey.spi.container.ContainerResponseFilters
,但无法对其进行配置

尝试从浏览器发送请求时出现异常

org.apache.catalina.core.StandardWrapperValve: Servlet[JAX-RSServlet]的Servlet.service(),位于具有路径的上下文中 [/crawlerweb]引发异常[Servlet执行引发异常] 使用根本原因java.lang.AbstractMethodError: uri(Ljava/lang/String;)Ljavax/ws/rs/core/UriBuilder; 位于javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:119) com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.j‌​(电话:662)


您必须在jersey服务中实现对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();

从评论中添加e内容。大多数用户不阅读评论,因此评论可能会被删除。因此,总是通过单击Eddit不要混合JeSee 1 .x和泽西2 .x或JAX-RS 1 .x和JAX-RS 2 .x依赖项来考虑[编辑]问题。这就是你问题的原因。选择一个版本,并坚持下去。为了得到答复,我试着把所有的东西都扔掉