一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Spring 4.1+JSONP的使用指南

Spring 4.1+JSONP的使用指南

2020-04-20 13:51風間影月 JAVA教程

在解釋JSONP之前,我們需要了解下”同源策略“,這對理解跨域有幫助。基于安全的原因,瀏覽器是存在同源策略機制的,同源策略阻止從一個源加載的文檔或腳本獲取或設置另一個源加載額文檔的屬性。說的簡單點就是瀏覽器限制腳本

JSONP就是為了解決這一問題的,JSONP是英文JSON with Padding的縮寫,是一個非官方的協議。他允許服務端生成script tags返回值客戶端,通過javascript callback的形式來實現站點訪問。JSONP是一種script tag的注入,將server返回的response添加到頁面是實現特定功能。

簡而言之,JSONP本身不是復雜的東西,就是通過scirpt標簽對javascript文檔的動態解析繞過了瀏覽器的同源策略。

如今的巨石應用已經越來越不行了,很多互聯網在后期都會在用分布式的架構

那么在頁面上不同的服務調用不同域名下的json是有問題的

(跨域:不同域名,相同域名但是不同端口)

JavaScript規范中提到的json是不能直接跨域調用,為了安全,但是能調用js片段

所以把json包裝為一個js片段,也就是jsonp那么就能夠跨域請求

在spring4.1后,提供了新的方法可以作為jsonp的調用

例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
@RequestMapping(value="/list")
  @ResponseBody
  public Object getItemCatList(String callback) {
    ItemCatResult result = itemCatService.getItemCatList();
    if (StringUtils.isBlank(callback)) {
      //需要把result轉換成字符串
      return result;
    }
    //如果字符串不為空,需要支持jsonp調用 spring4.1 以上可用
    MappingJacksonValue mappingJacksonValue = new MappingJacksonValue(result);
    mappingJacksonValue.setJsonpFunction(callback);
    return mappingJacksonValue;
  }

如圖,這就是jsonp

Spring 4.1+JSONP的使用指南

那么只要在js需要調用jsonp的地方稍加處理就能夠跨域調用數據了~

做了個例子,用來在頁面上展示jsonp:

(js寫的丑了點,本人后端出生,前端大俠們輕拍~)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
var Menu = function () {
 
  return {
    getMenuData: function (json) {
      console.log(json);
      var data = json.data;
      var html = "";
      for (var i = 0 ; i < data.length ; i ++) {
        var url = data[i].u;
        var name = data[i].n;
        var sub = data[i].i;
        
        html += "";
        html += "<li class='dropdown-submenu'>";
        html += "<a href='" + url + "'>" + name;
        html += "<span class='c-arrow c-toggler'></span>";
        html += "</a>";
        html += "<ul class='dropdown-menu c-pull-right'>";
        
        for (var j = 0 ; j < sub.length ; j ++) {
          var url = sub[j].u;
          var name = sub[j].n;
          var node = sub[j].i;
 
          html += "<li class='dropdown-submenu'>";
          html += "<a href='" + url + "'>" + name;
          html += "<span class='c-arrow c-toggler'></span>";
          html += "</a>";
          
          html += "<ul class='dropdown-menu c-pull-right'>";
          for (var k = 0 ; k < node.length ; k ++) {
//            debugger
            var name = node[k];
            var last = name.split("|");
            
            html += "<li>";
            html += "<a href='" + last[0] + "'>" + last[1] + "</a>";
            html += "</li>";
          }
          html += "</ul>";
          html += "</li>";
        }
        
        html += "</ul>";
        html += "</li>";
        
      }
      $("#itemCatMenu").html(html);
    },
    
    getJSONP: function (serverUrl, callbackFun) {
      $.ajax({
        type: "get",
        url: serverUrl,
        dataType: "jsonp",
        jsonp: "callback",
        jsonpCallback: callbackFun,
        success: function(json){
//          console.log(json);
        },
        error: function(e){
          if (e.status != "200") {
            console.log(e);
          }
        }
      });
    }
  };
  
}();
 
$(document).ready(function()
{
  var serverUrl = "http://localhost:8088/rest/menu/list";
  Menu.getJSONP(serverUrl, "Menu.getMenuData");
});

展示的效果:

Spring 4.1+JSONP的使用指南

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 香蕉久久一区二区三区啪啪 | 亚洲国产情侣一区二区三区 | 九色PORNY真实丨国产大胸 | 国产成人精品视频一区二区不卡 | 国产成人久视频免费 | 国产亚洲小视频 | 色老板在线免费视频 | 亚洲国产五月综合网 | 2020中文字幕| 99热综合在线 | 久久全国免费久久青青小草 | 女教师系列三上悠亚在线观看 | 亚洲精品久久久WWW游戏好玩 | 成年人免费在线看 | 99国产国人青青视频在线观看 | 青苹果乐园影院免费观看完整版 | 二区三区不卡不卡视频 | 成人人免费夜夜视频观看 | 五月激激激综合网色播免费 | 视频精品一区二区三区 | 高清国语自产拍免费视频国产 | 亚洲国产精品嫩草影院久久 | 天天草人人草 | 99在线精品日韩一区免费国产 | 国产精品刺激好大好爽视频 | 精品日韩欧美一区二区三区 | 深夜在线看| 波多野结衣xxxx性精品 | 国产一区二区三区免费在线视频 | 91制片厂制作传媒破解版免费 | 男人天堂网页 | 美女张开腿黄网站免费精品动漫 | 色综合久久中文字幕综合网 | 亚洲日日做天天做日日谢 | 白丝捆绑调教 | 国产特黄一级一片免费 | 亚洲视频在线免费看 | 9久热这里只有精品免费 | 污樱桃视频 | 亚洲 欧美 中文 日韩 视频 | 忘忧草研究院一二三 |