1. <sup id="1kcns"></sup>

    2. <rt id="1kcns"><legend id="1kcns"></legend></rt>
      国产AV巨作丝袜秘书,国产精品久久香蕉免费播放,国产草草影院ccyycom,涩涩爱狼人亚洲一区在线,日本阿v片在线播放免费,国产精品一区二区三区蜜臀,精品一区二区三区在线观看l,av深夜免费在线观看

      Http訪問(wèn)跨域解決

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

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

      一、跨域科普

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

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

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

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

      三、解決方案

      1、JQuery+ajax+jsonp 跨域訪問(wèn)

      Jsonp(JSON with Padding)是資料格式 json 的一種“使用模式”,可以讓網(wǎng)頁(yè)從別的網(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.  //簡(jiǎn)寫(xiě)形式,效果相同    
      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ù)類(lèi)型為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");//客戶(hù)端請(qǐng)求參數(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、通過(guò)注解的方式允許跨域

      在Controller類(lèi)或其方法上加@CrossOrigin注解,來(lái)使之支持跨域。

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

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

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

      該注解用于方法上,寫(xiě)法相同,處理時(shí),SpringMVC會(huì)對(duì)類(lèi)上標(biāo)簽和方法上標(biāo)簽進(jìn)行合并。

      3、通過(guò)配置文件的方式允許跨域

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

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

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


      日歷

      鏈接

      個(gè)人資料

      存檔

      主站蜘蛛池模板: 日本高清一区免费中文视频| 日本午夜视频| 18禁裸体自慰免费观看网站| 中国一区二区三区| 亚洲精中文字幕二区三区| 麻豆成人精品国产免费| 国产又大又黑又粗免费视频| 麻豆精品视频在线观看| 97视频国产中文字幕| 丝袜美腿在线观看播放一区| 黑人大荫道bbwbbb高潮潮喷| 综合色一色综合久久网| 国产萌白酱喷水视频在线观看| 日日躁狠狠躁| 国产一级毛片特级视频| 波多野结衣高潮AV在线播放| 亚洲熟女精品一区二区| 成人欧美一区在线视频| 免费在线3A级| 国产精品久久久久鬼色| 国产精品白丝在线观看有码| 夜夜撸夜夜操| 成人乱码一区二区三区av| 亚洲av成人一区二区| 亚洲欧美牲交| 亚洲欧美日韩在线码| 美女裸体a级毛片| 中文字幕一区二区在线观看| 日本高清一区二区不卡视频| 亚洲国产高清第一第二区| 91国产自拍一区二区三区| 99zyz| 视频一区视频二区视频三| 国产对白熟女受不了了| 狂野欧美激情性XXXX在线观看 | 狠狠躁天天躁夜夜躁婷婷| 97超级碰碰碰免费公开视频| 国产精品乱码高清在线观看| 色欲狠狠躁天天躁无码中文字幕| 免费无码一区无码东京热| 色99久久久久高潮综合影院|