Primeiro, vamos fazer alguns preparativos. Caso contrário, se você entende o que quero dizer, outros não entendem. Mesmo que os outros entendam, sempre haverá pessoas que não entendem. Então você tem que dizer isso. O que quero dizer é que essa explicação deve ser feita. A resposta é uma obrigação. Para facilitar a compreensão de todos.
Podemos demonstrar problemas de domínio cruzado, tomando dois nomes de domínio principal ou um nome de domínio principal + um nome de domínio de segundo nível como exemplos.
Cliente A.com
Servidor b.com ou sacom
AngularJS Versão v1.2.25
Os preparativos foram feitos muito bem e quase expusemos nosso editor como subline. Não vou contar a ele essa pessoa comum.
Alguém gritou que essa pergunta existe há muito tempo. Qual é o sentido de perguntar agora? Será que você ainda pode enganar as flores? Bem, eu posso realmente escrever as flores abertas. Vamos assistir ao programa, o que vamos realizar neste artigo é um exemplo completo de domínio cruzado.
Em seguida, vamos ver como o cliente solicita dados
Observe que nosso código está escrito sob o nome de domínio A.com
<! Doctype html> <html lang = "en" ng-app = "app"> <head> <meta charset = "utf-8"> <title> </title> <script src = "./ angular.min.js"> </script> <script type = "text/javascript"> []); App.Controller ('AppCtrl', ['$ scope', function ($ scope) {$ http ({Method: 'jsonp', url: 'http://www.b.com/test.php?callback=json_callback'.}). $ http.jsonp ('http://www.b.com/test.php?callback=json_callback') .success (function (msg) {console.log (msg);});Vemos que esta é uma solicitação de domínio cruzado diretamente na forma de JSONP, e sua operação é exatamente a mesma que o método de solicitação de domínio cruzado no jQuery. Observe que nosso retorno de chamada é corrigido, ou seja, JSON_CALLBACK, Tente não fazer nenhuma alteração
Vejamos a maneira como o teste.php lida com dados solicitados no servidor b.com. Aqui usamos o método PHP nativo como referência.
$ callback = isset ($ _ get ['retorno de chamada'])? $ _GET ['retorno de chamada']: default_callback; saída ($ chamada. '('. json_encode ($ dados). ')');Vamos olhar para os resultados do console do cliente.
Neste ponto, solicitamos com sucesso o domínio!
Por fim, vamos fazer um pequeno resumo e prestar atenção aos pontos -chave:
1. O parâmetro adicionado após o URL solicitado pelo cliente em domínios é? O valor do retorno de chamada do parâmetro é especificado como json_callback. Observe que está capitalizado, ou seja, JSON_Callback, não faça alterações. Parece que este é um grande poço. Se o valor do retorno de chamada for ligeiramente alterado, o cliente precisará definir a função de retorno de chamada globalmente e como posso passá -lo para $ SCOPE para processamento? Para evitar problemas desnecessários, eis o que significa fazer
2. Olhe para o servidor novamente. O servidor precisa especificar $ callback = $ _get ['retorno de chamada']; Receba retorno de chamada e você também descobrirá que o retorno de chamada recebido não é o valor do retorno de chamada escrito pelo nosso cliente. O cliente especifica JSON_Callback para acionar o mecanismo interno dos angulares.