JAX-RS开发(三):ajax访问REST服务时的跨域问题

同源策略是指:协议、主机和端口都相同。我们可以在本地机器上部署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服务这篇很不错的入门文章。



时间: 2024-12-18 18:40:50

JAX-RS开发(三):ajax访问REST服务时的跨域问题的相关文章

Ajax访问PHP页面出现的跨域问题

1.跨域问题:简单来说就是A域名下的程序想从B域名下的文件里面获取信息(这句话是我上网看到的) 2.一般请求(本地测试): 请求页 响应页  这样做是没问题的. 但我如果将Ajax请求的url修改成http://127.0.0.1/TestJQ/Test1/ajax.php,就会出问题了 控制台会报出XMLHttpRequest cannot load http://127.0.0.1/TestJQ/Test1/ajax.php. No 'Access-Control-Allow-Origin'

php服务端允许跨域访问

>>php服务端允许跨域访问<< >>同源策略和跨域解决方案<< 原文地址:https://www.cnblogs.com/hool/p/11618774.html

关于JavaScript 访问基于SOAP的WebService跨域问题

关于JavaScript 访问基于SOAP的WebService跨域问题 最近,搭建好了一个基于SOAP的WebService服务器.结果,使用JavaScript访问WebService遇到了跨域的问题! 首先,声明代码中的WebService不是本人搭建,由于本人的服务器地址不方便公开. 这个是测试HTML <html> <meta charset="utf-8" /> <head> <title>通过ajax调用WebService

.net 访问 geoserver 发布的 wms &nbsp; 跨域问题解决方案

环境:  服务器  geoserver2.4.1 开发机访问服务器发布的wms 存在跨域问题,研究两天终于找到解决方案. 主要思路是: 使用jquery的ajax 代替Groserver的request, 然后将wms的请求地址转发到.net的处理程序, 使用.net的处理程序进行跨域处理.  function mouseClick(e) {             var layer = new Array();             layer = map.getLayersByName(

JAX-RS开发(四):ajax跨域访问REST服务时的cors解决方案

上一篇博客我们通过JSONP解决AJAX跨域问题,本文将通过CORS来解决跨域问题.CORS是HTML5新推出的,需要较高版本的浏览器才能支持.我用的IE11和Chrome41,都是支持CORS规范的.cors可以参考下面几篇文章: cors规范 http://www.w3.org/TR/cors/ cors浏览器兼容性 http://caniuse.com/#search=cors tomcat7的cors解决方案 http://tomcat.apache.org/tomcat-7.0-doc

angularjs 控制器不能访问nodejs 3000端口,跨域访问

目前做的一个项目,前端采用的是angularjs,后端nodejs做服务器. 我尝试使用接下里的方式来发起对nodejs服务器的请求: <span style="font-family:SimHei;font-size:18px;"> $http.get('http://localhost:3000/') .success(function (data) { $scope.index = data; }) .error(function (data) { $scope.in

Ajax异步网络请求及JSONP跨域

1 // <-----Ajax-----> 2 function loadXMLDoc() { 3 function success(text) { 4 var textarea = document.getElementById('myid'); 5 textarea.value = text; 6 } 7 function fail(code) { 8 var textarea = document.getElementById('myid'); 9 textarea.value = 'E

访问本地json文件因跨域导致的问题

我使用jquery的getJSON的方法获取本地的json文件,并进行操作,获取json 数据代码如下: $.getJSON("invite_panel.json",function(data){//获取json文件中的数据 $.each(data, function (index, obj) //对json数据进行遍历 } 因我获取的是本地的 json 文件数据,因此导致了跨域问题,使得大部分主流浏览器报错,并无法获取本地的 json 文件,使用chrome浏览器查看错误如下: 通过

ajax获取json数据及实现跨域请求

最近想练习一下ajax获取json数据 , 首先上网找一些在线的可用来测试的接口. -----------------------------------------------------这里是接口分割线 Begin-------------------------------------------------------------------------------------------------- 电商接口 淘宝商品搜索建议: http://suggest.taobao.com/s