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

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

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的使用指南

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 色多多在线观看视频 | 韩日一区二区三区 | 久久亚洲一级α片 | 亚洲va欧美va天堂v国产综合 | 爱欲荡漾在线观看 | 久久不射电影网 | 亚洲欧美综合区自拍另类 | 王雨纯 羞羞 | 日本视频二区 | 91国语自产拍在线观看 | 免费国产影视观看网站入口 | 日韩精品免费一区二区 | 91精品国产麻豆国产自产在线 | 久久99国产综合精品AV蜜桃 | 国产成人精品第一区二区 | 亚洲精品短视频 | 交换年轻夫妇HD中文字幕 | 2019年国产高清情侣视频 | 好湿好紧太硬了我太爽了网站 | av在线亚洲男人的天堂 | 国产亚洲成归v人片在线观看 | 天天色色色 | 成人综合久久综合 | 国产三级精品91三级在专区 | 国产一区二区三区欧美精品 | 四虎永久免费地址在线观看 | 国产精品久久久久久吹潮 | 亚洲色图150p | 70岁多老妇人特黄a级毛片 | 欧美撒尿屁股嘘嘘撒尿 | 美女免费观看一区二区三区 | 按摩师他揉我奶好爽捏我奶 | 精品国产精品人妻久久无码五月天 | 国产实拍会所女技师在线 | 男生和老师一起差差差 | 亚洲v成人天堂影视 | 色欧美亚洲 | 非洲黑人bbwbbwbbw| 耽美调教高h | 嗯啊好大好粗 | 午夜神器老司机高清无码 |