<strike id="g3zqm"></strike>

      <cite id="g3zqm"></cite>

        <tr id="g3zqm"><center id="g3zqm"></center></tr>
        <pre id="g3zqm"><sup id="g3zqm"></sup></pre>
        <li id="g3zqm"></li>
      1. 少妇高潮激情一区二区三,免费av深夜在线观看,亚洲狼人久久伊人久久伊,久久精品人人做人人爽电影蜜月,黄色特级片一区二区三区,欧美日韩在线亚洲二区综二,极品少妇无套内射视频,日本极品少妇videossexhd

        Http訪問跨域解決

        2018-3-23    seo達(dá)人

        如果您想訂閱本博客內(nèi)容,每天自動發(fā)到您的郵箱中, 請點(diǎn)這里

        一、跨域科普

        跨域,即跨站HTTP請求(Cross-site HTTP request),指發(fā)起請求的資源所在域不同于請求指向資源所在域的HTTP請求。

        二、如何產(chǎn)生跨域

        當(dāng)使用前后端分離,后端主導(dǎo)的開發(fā)方式進(jìn)行前后端協(xié)作開發(fā)時,常常有如下情景:

            a、后端開發(fā)完畢在服務(wù)器上進(jìn)行部署并給前端API文檔。
            b、前端在本地進(jìn)行開發(fā)并向遠(yuǎn)程服務(wù)器上部署的后端發(fā)送請求。
            c、在這種開發(fā)過程中,如果前端想要一邊開發(fā)一邊測試接口,就需要使用跨域的方式。

        三、解決方案

        1、JQuery+ajax+jsonp 跨域訪問

        Jsonp(JSON with Padding)是資料格式 json 的一種“使用模式”,可以讓網(wǎng)頁從別的網(wǎng)域獲取資料。

        下面給出例子:

        html 前端代碼:

        [html] view plain copy
        1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">    
        2. <html>    
        3. <head>    
        4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">    
        5. <title>Insert title here</title>    
        6. <script type="text/javascript" src="resource/js/jquery-1.7.2.js"></script>    
        7. </head>    
        8. <script type="text/javascript">    
        9. $(function(){       
        10.  /*    
        11.  //簡寫形式,效果相同    
        12.  $.getJSON("http://app.example.com/base/json.do?sid=1494&busiId=101&jsonpCallback=?",    
        13.          function(data){    
        14.              $("#showcontent").text("Result:"+data.result)    
        15.  });    
        16.  */    
        17.  $.ajax({    
        18.      type : "get",    
        19.      async:false,    
        20.      url : "http://app.example.com/base/json.do?sid=1494&busiId=101",    
        21.      dataType : "jsonp",//數(shù)據(jù)類型為jsonp    
        22.      jsonp: "jsonpCallback",//服務(wù)端用于接收callback調(diào)用的function名的參數(shù)    
        23.      success : function(data){    
        24.          $("#showcontent").text("Result:"+data.result)    
        25.      },    
        26.      error:function(){    
        27.          alert('fail');    
        28.      }    
        29.  });     
        30. });    
        31. </script>    
        32. <body>    
        33. <div id="showcontent">Result:</div>    
        34. </body>    
        35. </html>    

        服務(wù)器端:

        [java] view plain copy
        1. import java.io.IOException;    
        2. import java.io.PrintWriter;    
        3. import java.util.HashMap;    
        4. import java.util.Map;    
        5. import javax.servlet.http.HttpServletRequest;    
        6. import javax.servlet.http.HttpServletResponse;    
        7. import net.sf.json.JSONObject;    
        8. import org.springframework.stereotype.Controller;    
        9. import org.springframework.web.bind.annotation.RequestMapping;    
        10.      
        11. @Controller    
        12. public class ExchangeJsonController {    
        13.  @RequestMapping("/base/json.do")    
        14.  public void exchangeJson(HttpServletRequest request,HttpServletResponse response) {    
        15.     try {    
        16.      response.setContentType("text/plain");    
        17.      response.setHeader("Pragma""No-cache");    
        18.      response.setHeader("Cache-Control""no-cache");    
        19.      response.setDateHeader("Expires"0);    
        20.      Map<String,String> map = new HashMap<String,String>();     
        21.      map.put("result""content");    
        22.      PrintWriter out = response.getWriter();         
        23.      JSONObject resultJSON = JSONObject.fromObject(map); //根據(jù)需要拼裝json    
        24.      String jsonpCallback = request.getParameter("jsonpCallback");//客戶端請求參數(shù)    
        25.      out.println(jsonpCallback+"("+resultJSON.toString(1,1)+")");//返回jsonp格式數(shù)據(jù)    
        26.      out.flush();    
        27.      out.close();    
        28.    } catch (IOException e) {    
        29.     e.printStackTrace();    
        30.    }    
        31.  }    
        32. }    

        2、通過注解的方式允許跨域

        在Controller類或其方法上加@CrossOrigin注解,來使之支持跨域。

        舉例:
        [java] view plain copy
        1. @CrossOrigin(origins = "*", maxAge = 3600)  
        2. @RestController  
        3. @RequestMapping("/User")  
        4. public class UserController {  
        5. }  

        其中origins為CrossOrigin的默認(rèn)參數(shù),即跨域來源,*即任何來源,也可以是其他域名。即可以以以下形式:

        [java] view plain copy
        1. @CrossOrigin("http://test.com")  
        2. @CrossOrigin(origins="http://test.com",maxAge=3600)  

        該注解用于方法上,寫法相同,處理時,SpringMVC會對類上標(biāo)簽和方法上標(biāo)簽進(jìn)行合并。

        3、通過配置文件的方式允許跨域

        在web.xml中添加如下配置:

        [html] view plain copy
        1. <filter-mapping>   
        2.     <filter-name>CorsFilter</filter-name>   
        3.     <url-pattern>/*</url-pattern>   
        4. </filter-mapping>  
        使用這個Filter即可讓整個服務(wù)器全局允許跨域。

        藍(lán)藍(lán)設(shè)計m.hengshangtqd.cn )是一家專注而深入的界面設(shè)計公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計、BS界面設(shè)計 、 cs界面設(shè)計 、 ipad界面設(shè)計 、 包裝設(shè)計 、 圖標(biāo)定制 、 用戶體驗 、交互設(shè)計、 網(wǎng)站建設(shè) 、平面設(shè)計服務(wù)


        日歷

        鏈接

        個人資料

        藍(lán)藍(lán)設(shè)計的小編 http://m.hengshangtqd.cn

        存檔

        主站蜘蛛池模板: 国产高颜值不卡一区二区| 欧美人成在线播放网站免费| 色网最新地址在线观看| 狠狠撸在线观看| 午夜福利精品国产二区| 国产超碰人人做人人爱| 51精品视频| 一区二区在线 | 欧洲| 久久久99久久久国产自输拍| 久久亚洲精精品中文字幕| 亚洲天堂在线播放| 亚洲熟伦熟女新五十熟妇| 亚洲天天操| 色综综| 国产丝袜打飞机免费在线| 午夜成人性爽爽免费视频| 国产a在视频线精品视频下载| 亚洲香蕉av一区二区蜜桃| 亚洲综合一二| 福利一区二区视频在线| 国产内射XXXXX在线| 欧美大屁股喷潮水xxxx| 国产又色又爽又黄的| 一区二区三区av| 熟女性饥渴一区二区三区| 亚欧美日韩香蕉在线播放视频| 国产精品福利无圣光一区二区| 天美传媒一区二区| 国产精品不卡一区二区久久| 孕妇bbwbbwbbwbbw超清| 97AV在线| 91社网| 无码人妻久久一区二区三区| 风流少妇bbwbbw69视频| 成人区人妻精品一区二区| 中国熟妇毛多多裸交视频| 中文字幕无码精品亚洲35| 91精品啪国产在线观看免费牛牛| 亚洲伊人成无码综合网| 无码日韩精品一区二区人妻 | 91视频在线|