Tout d'abord, faisons quelques préparatifs. Sinon, si vous comprenez ce que je veux dire, les autres ne comprennent pas. Même si les autres comprennent, alors il y aura toujours des gens qui ne comprendront pas. Alors vous devez le dire. Ce que je veux dire, c'est que cette explication doit être faite. La réponse est un must. Afin de faciliter la compréhension de tout le monde.
Nous pouvons démontrer des problèmes de domaine croisé en prenant deux noms de domaine principaux ou un nom de domaine principal + un nom de domaine de deuxième niveau comme exemples.
Client A.com
Server B.C. ou SACOM
Version angularjs v1.2.25
Les préparatifs ont été très bien faits et nous avons presque exposé notre éditeur comme subline. Je ne lui dirai pas cette personne ordinaire.
Quelqu'un a crié que cette question existe depuis longtemps. Quel est l'intérêt de le demander maintenant? Se pourrait-il que vous puissiez encore tromper les fleurs? Eh bien, je peux vraiment écrire les fleurs ouvertes. Regardons l'émission, ce que nous allons jouer dans cet article est un exemple complet dans le domaine.
Ensuite, voyons comment le client demande des données
Remarque, notre code est écrit sous le nom de domaine A.COM
<! Doctype html> <html lang = "en" ng-app = "app"> <éad> <meta charset = "utf-8"> <title> </ title> <script src = "./ angular.min.js"> </ script> <script type = "Text / javascrip []); app.Controller ('appctrl', ['$ scope', function ($ scope) {$ http ({méthode: 'jsonp', url: 'http://www.b.com/test.php?callback=json_callback' ,, }).success(fonction (msg) {console.log (}); or out; $ http.jsonp ('http://www.b.com/test.php?callback=json_callback') .success (function (msg) {console.log (msg);});Nous voyons qu'il s'agit d'une demande de domaine transversal directement sous la forme de JSONP, et son opération est exactement la même que la méthode de demande de domaine croisé dans jQuery. Notez que notre rappel est corrigé, c'est-à-dire JSON_Callback, essayez de ne pas apporter de modifications
Examinons la façon dont Test.php gère les données demandées dans le serveur B.com. Ici, nous utilisons la méthode PHP native comme référence.
$ callback = isset ($ _ get ['callback'])? $ _Get ['callback']: default_callback; exit ($ callback. '('. json_encode ($ data). ')');Regardons les résultats de la Client Console.Log Record
À ce stade, nous avons demandé avec succès dans le domaine!
Enfin, faisons un petit résumé et faisons attention aux points clés:
1. Le paramètre ajouté après l'URL demandée par le client dans les domaines est? Callback = json_callback. La valeur du rappel des paramètres est spécifiée comme json_callback. Notez qu'il est en majuscule, c'est-à-dire JSON_CALLBACK, n'apportez aucun changement. On dirait que c'est une grande fosse. Si la valeur du rappel est légèrement modifiée, le client doit définir la fonction de rappel à l'échelle mondiale et comment puis-je le transmettre à $ Scope pour le traitement? Pour éviter des problèmes inutiles, voici ce que cela signifie de faire
2. Regardez à nouveau le serveur. Le serveur doit spécifier $ callback = $ _get ['callback']; Recevez un rappel et vous constaterez également que le rappel reçu n'est pas la valeur du rappel écrit par notre client. Le client spécifie JSON_Callback pour déclencher le mécanisme interne d'AngularJS.