springmvc ajax tomcat簡單配置實現跨域訪問

發現一種改動最小也能實現跨域請求的方法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,使用「掃一掃」付款,付款碼見下圖,別忘了付款留言哦!


或使用微信, 不用加好友就能付款

相關文章
相關標籤/搜索