發現一種改動最小也能實現跨域請求的方法javascript
服務端
html
服務端修改web.xml配置文件, 增長過濾器 (不用導入任何jar包, 用的tomcat自帶jar)java
<!-- 支持跨域請求 --> <filter> <filter-name>CorsFilter</filter-name> <filter-class>org.apache.catalina.filters.CorsFilter</filter-class> </filter> <filter-mapping> <filter-name>CorsFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
服務端controller使用@RequestBody來獲取參數jquery
@RequestMapping("/get_json.html") public void commonGetJson(@RequestBody String json,HttpServletRequest request,HttpServletResponse response){ System.out.println(json); // 輸出json格式字符串 // {"parameter":{"userName":"17737190001","userPass":"6e316845103d21d700aceecdba7eadae"},"version":100,"opcode":"U00006"} }
客戶端web
使用jquery的ajax, 設置crossDomain爲true, 容許跨域訪問 , 下面的jquery庫引用的百度靜態資源庫ajax
<script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script> <script> $(function(){ $.ajax({ url:"http://192.168.16.20:8080/zyzp-web-router/common/get_json.html", data:JSON.stringify({"parameter":{"userName":"17737190001","userPass":"6e316845103d21d700aceecdba7eadae"},"version":100,"opcode":"U00006"}), dataType:"text", type:"POST", crossDomain:true, contentType:"application/json;charset=UTF-8", success:function(data){ console.log(data); } }); }); </script>
- JSON.stringify 將json對象轉換爲json字符串
- crossDomain:true 設置容許跨域請求
- contentType:"application/json;charset=UTF-8" 設置發送給服務器時的內容編碼類型apache
配置好服務端後, 直接在瀏覽器運行這段js代碼, 就能跨域訪問到服務器的數據json
其它還有jsonp方式, 在<mvc:annotation-driven>中配置轉化器, 若是連接中存在callback參數a , 那麼就輸出js代碼跨域
a({"userId":1});
如需幫助可向我發起QQ聊天發起QQ聊天瀏覽器
友情贊助
若是您喜歡此文,感受對您工做有幫助,預期領導會給您漲工資,不妨小額贊助一下,讓我有動力繼續努力。
贊助方式:打開支付寶App,使用「掃一掃」付款,付款碼見下圖,別忘了付款留言哦!
或使用微信, 不用加好友就能付款