允许跨网域请求平面网络服务 [英] Allow cross domain request to jersey web services

查看:760
本文介绍了允许跨网域请求平面网络服务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Facing issue related to allowing cross domain requests in jersey. I tried to implement com.sun.jersey.spi.container.ContainerResponseFilters, but not able to configure it.

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

Getting exception, when try to send the request from browser.


org.apache.catalina.core.StandardWrapperValve调用SEVERE :
Servlet.service()for servlet [JAX-RS Servlet]与路径
[/ crawlerweb]上下文threw异常[Servlet执行抛出异常]
与根本原因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)

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)


推荐答案

您必须在泽西服务中实施CORS支持。
用于跨域请求,浏览器首先使用OPTIONS方法发送预检HTTP请求。
那么您的服务器必须返回某些CORS头作为响应。

You must implement support for CORS in your jersey service. for cross domain request, browser first sends a preflight httprequest with OPTIONS method. then your server must return certain CORS headers in response.

访问控制允许原产地:*
访问控制允许方法:GET,POST

Access-Control-Allow-Origin :* Access-Control-Allow-Methods: GET, POST

浏览器会检查这些标头,如果它们存在,那么它会产生你想要的真正的httprequest。

browsers checks for those headers if they are present then it makes the real httprequest that you want.

您可以尝试此

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();

这篇关于允许跨网域请求平面网络服务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆