Domain croisé, un problème commun rencontré dans le développement frontal. AngularJS implémente la méthode du domaine transversal similaire à Ajax et utilise le mécanisme CORS.
Ce qui suit explique l'utilisation de $ http pour implémenter des données de demande inter-domaine dans AngularJS.
Angularjs xmlhttprequest: $ http est utilisé pour lire les données d'un serveur distant
$ http.post (url, data, [config]). Success (function () {...}); $ http.get (url, [config]). Success (function () {...}); $ http.get (url, [config]). Success (function () {...});1. $ Http.jsonp [Implémentation de Domain croisé]
1. Spécifiez callback et de rappel. Lorsque le nom de la fonction est JSON_CALLBACK , la fonction de rappel de succès sera appelée. JSON_CALLBACK doit être en majuscule.
2. Spécifiez d'autres fonctions de rappel, mais doivent être des fonctions globales définies sous la fenêtre. callback doit être ajouté à l'URL.
2. $ Http.get [Implémentation du domaine croisé]
1. Définissez le serveur pour permettre l'accès sous d'autres noms de domaine
Response.sethEader ("Access-Control-Allow-Origin", "*"); // Autoriser tous les noms de domaine pour accéder à Response.sethEader ("Access-Control-allow-origin", "http://www.123.com"); // Autoriser l'accès à www.123.com 2. Le côté angularjs utilise $http.get()
3. $ Http.post [Implémentation de Domain croisé]
1. Définissez les paramètres côté serveur pour permettre l'accès sous d'autres noms de domaine, ainsi que les paramètres de type de réponse et d'en-tête de réponse
Response.sethEader ("Access-Control-Allow-Origin", "*"); Response.sethEader ("Access-Control-Allow-Methods", "Post"); Response.sethEader ("Access-Control-Allow-Headers", "X-Request-with, Content-Type"); 2. Le côté angularjs utilise $http.post() et définit les informations d'en-tête de demande en même temps
$ http.post ('http: //localhost/ajax/getallindustrycategoty.pt', {LanguageColumn: 'name_eu'}, {'Content-Type': 'Application / x-www-for-forlencoded'}).4. Méthode d'implémentation
Méthode inter-domaine un [ JSONP ]:
Méthode 1:
$ http.jsonp ("http: //localhost/sitesettings/getbadgeinfo.pt? jsonp = json_callback & siteid = 137bd406") .success (fonction (data) {...}); // Le nom du rappel devrait être la chaîne json_callback. Méthode 2 [Valeur de retour, vous devez utiliser la méthode de rappel correspondante pour la recevoir, mais comment le mettre dans $scope ?]:
$ http.jsonp ("http: //localhost/sitesettings/getbadgeinfo.pt? jsonp = badgeabc & siteID = 137bd406"); fonction badgeabc (data) {...} public String execute () lève exception {string result = fail; Response.Setheader ("", ""); SiteHandlerAction SiteHandlerAction = (SiteHandlerAction) beansfactory.getBean (SiteHandlerAction.class); Badgehandleraction badgehandleraction = (badgehandleraction) beansfactory.getBean (badgehandleraction.class); if ("". equals (SiteID) || siteId == null || stringUtils.isblank ("jsonp")) {result = fail; } else {Site Site = SiteHandlerAction.Find (SiteID); UserBadGredatus UserBadgestatus = badgeHandlerAction.GetUserBadgestatus (site.getId ()); if (userbadgestatus! = null) {result = "{/"t/":"+Userbadgestatus.getStyle()+" ,/"l/":"+Userbadgestatus.getsuspen_Location (++" ,///":+site.getsuspen_location (+"; JSONObject JSONOBJ = JSONObject.FromObject (Result); String JSON = JSONOBJ.TOSTRING (); result = jsonp + "(" + json + ")"; }} Printwriter write = réponse.getWriter (); write.print (résultat); write.flush (); write.close (); Renvoie aucun;} Méthode inter-domaine deux [ $http.get() ]:
Fonction GetAdUstryController ($ Scope, $ http) {$ http.get ('http: //localhost/ajax/GetalLinSUstryCategoty.pt? LanguageColumn = name_eu') .sucCesss (function (data) {$ scope.industries = data;});} Méthode inter-domaine Trois [ $http.post() ]:
Fonction getAsTryController ($ Scope, $ http) { $ http.post ('http: //localhost/ajax/getallindustrycategoty.pt', {LanguageColumn: 'name_eu'}, {'Content-Type': 'Application / X-www-Form-Urlencoded'}). Java Side prend en charge les demandes de domaine inter-domaine exectue () {réponse.sethEader ("Access-Control-Allow-Origin", "*"); // Quelles URL sont autorisées à demander des domaines à la réponse. // Les méthodes de demande autorisées sont généralement obtenez, publier, mettre, supprimer, options Response.sethEader ("Access-Control-allow-Headers", "X-Requieted-with, Content-Type"); // quels en-têtes de demande sont autorisés à être autorisésPeut croix
SiteHandlerAction SiteHandler = (SiteHandlerAction) beansfactory.getBean (SiteHandlerAction.class); List list = SiteHandler.getAlLinSistryCategory (); // Toutes les collections de classification JSONArray JSONArray = JSONArray.FromObject (List); // convertit la liste en jsonstring json = jsonArray.toString (); // Convertir en json string try {printwriter write = réponse.getWriter (); write.print (json); write.close ();} catch (ioException e) {e.printStackTrace ();} ne renvoie aucun;}Résumer
Ce qui précède concerne cet article. J'espère que le contenu de cet article sera utile à tout le monde d'apprendre à utiliser AngularJS.