JAX-RS開發(三):ajax訪問REST服務時的跨域問題以及jsonp解決方案__js

來源:互聯網
上載者:User

同源策略是指:協議、主機和連接埠都相同。我們可以在本地機器上部署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/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://cxf.apache.org/jaxrshttp://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服務 這篇很不錯的入門文章。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.