ITKeyword,专注技术干货聚合推荐

注册 | 登录

JAX-RS开发(三):ajax访问REST服务时的跨域问题以及jsonp解决方案

aitangyong 分享于 2015-04-13

2020腾讯云共同战“疫”,助力复工(优惠前所未有!4核8G,5M带宽 1684元/3年),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1054

2020阿里云最低价产品入口,含代金券(新老用户有优惠),
地址https://www.aliyun.com/minisite/goods

同源策略是指:协议、主机和端口都相同。我们可以在本地机器上部署2个不同端口的tomcat,让一个tomcat下的应用通过ajax访问另一个tomcat下的rest服务,这样就存在跨域访问问题了。修改conf/server.xml下面的三处端口号: <Server port="****" shutdown="SHUTDOWN">

<Connector port="****" protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443" />

<Connector port="****" protocol="AJP/1.3" redirectPort="8443" /> 在上一篇博客的基础上,为了解决cxf跨域问题需要: 1.修改pom文件,增加providers <dependency>

<groupId>org.apache.cxf</groupId>

<artifactId>cxf-rt-rs-extension-providers</artifactId>

<version>${cxf.version}</version></dependency> 2.修改cxf-spring.xml配置jsonp拦截器 <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:jaxrs="http://cxf.apache.org/jaxrs"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

http://cxf.apache.org/jaxrs

http://cxf.apache.org/schemas/jaxrs.xsd">

<jaxrs:server address="/rest">

<jaxrs:serviceBeans>

<ref bean="nameServiceImpl"/>

</jaxrs:serviceBeans>

<!--jsonp-->

<jaxrs:providers>

<bean class="org.apache.cxf.jaxrs.provider.jsonp.JsonpPreStreamInterceptor"/>

</jaxrs:providers>

<jaxrs:inInterceptors>

<bean class="org.apache.cxf.jaxrs.provider.jsonp.JsonpInInterceptor"/>

</jaxrs:inInterceptors>

<jaxrs:outInterceptors>

<bean class="org.apache.cxf.jaxrs.provider.jsonp.JsonpPostStreamInterceptor"/>

</jaxrs:outInterceptors>

</jaxrs:server>

</beans> 3.在另一个tomcat下通过ajax访问 $.ajax({

type: 'get',

url: 'http://127.0.0.1:8080/aty-rest/rest/rest/welcome',

dataType: 'jsonp',

jsonp: '_jsonp',

jsonpCallback: 'callback',

success: function(data) {

alert(JSON.stringify(data));

}}); 本文参考了 Web Service 那点事儿(4)—— 使用 CXF 开发REST服务 这篇很不错的入门文章。 

同源策略是指:协议、主机和端口都相同。我们可以在本地机器上部署2个不同端口的tomcat,让一个tomcat下的应用通过ajax访问另一个tomcat下的rest服务,这样就存在跨域访问问题了。修改conf/serv

相关阅读排行


相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。