UDN-企业互联网技术人气社区

板块导航

浏览  : 9548
回复  : 1

Jersey配置REST跨域访问

[复制链接]
NowYouSeeMe的头像 楼主
发表于 2015-1-28 17:16:15 | 显示全部楼层 |阅读模式
如果使用Jersey框架提供REST对外服务接口, 可以在代码级别通过编写Filter来实现。

Filter的实现如下:
  1. import com.sun.jersey.spi.container.ContainerRequest;
  2. import com.sun.jersey.spi.container.ContainerResponse;
  3. import com.sun.jersey.spi.container.ContainerResponseFilter;

  4. public class CorsFilter implements ContainerResponseFilter {
  5.   
  6.     @Override
  7.     public ContainerResponse filter(ContainerRequest creq, ContainerResponse cres) {
  8.         cres.getHttpHeaders().add("Access-Control-Allow-Origin", "*");
  9.         /**
  10.          * 允许的Header值,不支持通配符
  11.          */
  12.         cres.getHttpHeaders().add("Access-Control-Allow-Headers", "origin, content-type, accept, authorization");
  13.         cres.getHttpHeaders().add("Access-Control-Allow-Credentials", "true");

  14.         /**
  15.          * 即使只用其中几种,header和options是不能删除的,因为浏览器通过options请求来获取服务的跨域策略
  16.          */
  17.         cres.getHttpHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD");

  18.         /**
  19.          * CORS策略的缓存时间
  20.          */
  21.         cres.getHttpHeaders().add("Access-Control-Max-Age", "1209600");

  22.        //可以通过 throw new WebApplicationException(Status.UNAUTHORIZED); 来中断请求

  23.         return cres;
  24.     }
  25. }

复制代码

这里只是写了一些基本的策略,如果想做到更加精细可以更改配置,或者抛出异常。

然后需要将Filter加到ServletContainer中

  1. public class JerseyWrapper extends ServletContainer {

  2.    private static PackagesResourceConfig prc;

  3.     static {

  4.         prc = new PackagesResourceConfig(JerseyWrapper.class.getPackage().getName());

  5.         prc.getProperties().put(RESTConstants.CONTAINER_RESPONSE_FILTERS, CorsFilter.class.getCanonicalName());
  6.         
  7.         prc.setPropertiesAndFeatures(config);

  8.     }

  9.     public JerseyWrapper() {
  10.         super(prc);
  11.     }
  12. }
复制代码





发表于 2018-4-24 11:02:44 | 显示全部楼层
我使用的办法是,把过滤器添加到spring配置文件中,完美解决,搞了三天了,十分谢谢博主,不多说了,博主我爱你,--=)
使用道具 举报

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部