O JSONP deve resolver esse problema. O JSONP é a abreviação de JSON com estofamento em inglês e é um protocolo não oficial. Ele permite que o servidor gere tags de script de retorno Value Client e obtenha o acesso ao site através da forma de retorno de chamada JavaScript. O JSONP é uma injeção de tag de script, adicionando a resposta retornada pelo servidor à página é implementar funções específicas.
Em suma, o próprio JSONP não é uma coisa complicada, ignora a política homóloga do navegador através da tag scipt.
Atualmente, a aplicação de Jushi está se tornando cada vez menos eficaz. Muitas empresas da Internet usarão arquiteturas distribuídas nos estágios posteriores.
Depois, há um problema em chamar JSON sob diferentes nomes de domínio na página
(Domínio cruzado: nomes de domínio diferentes, os mesmos nomes de domínio, mas portas diferentes)
O JSON mencionado na especificação JavaScript não pode ser chamado diretamente entre domínios. Para segurança, ele pode ligar para fragmentos JS.
Então envolva o JSON em um fragmento JS, ou seja, JSONP, depois solicitações de domínio cruzado
Após a primavera 4.1, novos métodos são fornecidos como chamadas para JSONP
exemplo:
@RequestMapping (value = "/list") @ResponseBody Public Object getItemCatList (String callback) {itemCatRESULT resultado = itemCatService.getItemCatList (); if (stringutils.isblank (retorno de chamada)) {// O resultado precisa ser convertido em um resultado de retorno de string; } // Se a string não estiver vazia, você precisará suportar o jsonp ligue para Spring4.1. MappingJacksonValue mappingjacksonValue = new MappingjacksonValue (resultado); MappingjacksonValue.setjsonpfunction (retorno de chamada); retornar o MappingJacksonValue; }Como mostrado na imagem, este é Jsonp
Então, desde que você precise ligar para o JSONP, você pode chamar dados entre domínios após a necessidade de um pouco de processamento.
Fiz um exemplo para exibir o JSONP na página:
(JS é um pouco feio. Nasci no back -end e os heróis no front -end são taptados ~)
var menu = function () {return {getMenudata: function (json) {console.log (json); var dados = json.data; var html = ""; for (var i = 0; i <data.length; i ++) {var url = dados [i] .u; Var nome = dados [i] .n; var sub = dados [i] .i; html += "<li class = 'suspenso-submenu'>"; 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 = 'suspenso-submenu'>"; html + = "<a href = '" + url + "'>" + nome; 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 ++) {// depurador var name = node [k]; var last = name.split ("|"); html += "<li>"; html + = "<a href = '" + último [0] + "'>" + último [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, sucess: function) {// console.log (json); {console.log (e); }}; } (); $ (document) .ready (function () {var serverurl = "http: // localhost: 8088/rest/menu/list"; menu.getjsonp (serverurl, "menu.getmenudata");});Efeitos mostrados: