Navigateurs : Les dernières versions proposent des solutions d'AJAX entre domaines. Allons-nous vers une généralisation ?

Le , par Bovino

0PARTAGES

1  0 
AJAX a depuis ses débuts été cantonné à des requête sur un même domaine.
Cette limitation était due à la politique de même origine (same origin policy) de JavaScript.
Mais avec l'émergence de nouveaux concepts d'internet (réseaux sociaux, widgets, web services), cette politique est désormais plus handicapante que protectrice pour les développeurs d'applications internet riches.

Avec la sortie récente des dernières versions des navigateurs (IE8, FF3.5, Safari 4), cette limitation commence à être levée et des solutions d'AJAX inter domaines sont désormais fournies.

Bien évidemment, on regrettera encore une fois que IE8 se démarque avec une méthode différente des autres navigateurs.

Pour en savoir plus :
Same Origin Policy
cross-site xmlhttprequest with CORS
HTTP access control

Que pensez-vous de cette évolution ?
Va-t-elle selon vous dans le sens d'une évolution souhaitable ou au contraire fragilise-t-elle un peu plus la sécurité des apllications Web ?

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de SpaceFrog
Rédacteur/Modérateur https://www.developpez.com
Le 07/07/2009 à 13:55
niveau securité .. faut voir les limitations du crossdomain
c'est sur que ça faciliterait la tache de recupérer juste du texte ou du xml ..
1  0 
Avatar de stailer
Membre chevronné https://www.developpez.com
Le 07/07/2009 à 15:58
Concrètement il y a déjà des navigateurs qui autorisent cela ?

Par exemple, sous Firefox 3.5 ou XulRunner je peux faire des requêtes ajax sur plusieurs domaines ?
1  0 
Avatar de RomainVALERI
Expert confirmé https://www.developpez.com
Le 07/07/2009 à 16:19
Pfff, dire que je m'étais galéré à en comprendre les tenants et les aboutissants de cette fameuse SOP...

En tout cas, vu le nombre de messages sur le forum ajax à propos de ce genre de problèmes... ça va quand même faciliter la tâche à pas mal de monde je suppose
1  0 
Avatar de lunatix
Rédacteur https://www.developpez.com
Le 07/07/2009 à 23:38
c'est une tres bonne nouvelle : et dans le contexte de la généralisation des web services de type REST/ et rest like (xml over http) : le navigateur va devenir la plate forme de mashup.
1  0 
Avatar de Bovino
Rédacteur https://www.developpez.com
Le 09/07/2009 à 13:29
Citation Envoyé par stailer
Concrètement il y a déjà des navigateurs qui autorisent cela ?
Oui, c'est précisément l'intérêt de la chose, voici un exemple (fourni dans le second lien du premier post) d'implémentation :
Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var url = "http://bar.other/publicNotaries/"
if(XMLHttpRequest)
{
  var request = new XMLHttpRequest();
  if("withCredentials" in request)
  {
   // Firefox 3.5 and Safari 4
   request.open('GET', url, true);
   request.onreadystatechange = handler;
   request.send();
  }
  else if (XDomainRequest)
  {
   // IE8
   var xdr = new XDomainRequest();
   xdr.open("get", url);
   xdr.send();
 
   // handle XDR responses -- not shown here :-)
  }
 
 // This version of XHR does not support CORS  
 // Handle accordingly
}
On notera comme souvent que IE8 ne gère pas cela comme les autres...
1  0 
Avatar de DoubleU
Membre expérimenté https://www.developpez.com
Le 09/07/2009 à 17:27
Pour une fois, je prefere l'approche de IE qui consiste à implémenter un objet différent que d'ajouter une propriété à l'objet XmlHTTPRequest car autant, avant FF3.5 et IE8 l'objet XHR ne présentait pas de risque (on maitrisait le serveur et le client), autant avec XDR, on ne doit avoir aucune confiance en la réponse du serveur.

Avoir un objet différent permet de faire prendre conscience au développeur qu'il manipule un objet potentiellement dangereux. Cela permet également de restreindre l'utilisation dudit objet en cas de besoin administratif.
1  0 
Avatar de emmanuel.remy
Expert confirmé https://www.developpez.com
Le 10/07/2009 à 11:28
Citation Envoyé par DoubleU Voir le message
Pour une fois, je prefere l'approche de IE qui consiste à implémenter un objet différent que d'ajouter une propriété à l'objet XmlHTTPRequest car autant, avant FF3.5 et IE8 l'objet XHR ne présentait pas de risque (on maitrisait le serveur et le client), autant avec XDR, on ne doit avoir aucune confiance en la réponse du serveur.
+1; d'autant plus qu'on se demande bien dans ces cas là à quoi sert la notion d'héritage

Avoir un objet différent permet de faire prendre conscience au développeur qu'il manipule un objet potentiellement dangereux. Cela permet également de restreindre l'utilisation dudit objet en cas de besoin administratif.
Encore une fois d'accord avec toi. Mais je tempérerais un peu car si on regarde les codes de base pour créer un objet xhr (dont celui de la FAQ) on s'aperçoit que cela passe quasiment à chaque fois par une fonction type (extrait de la faq):
Code : Sélectionner tout
1
2
3
4
5
6
7
function getXMLHTTP(){
var xhr=null;
...

return xhr;
}
Donc on peut imaginer voir fleurir prochainement des fonctions similaires comme:
Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
function getXDomainRequest() {
   var xdr = null;
   if (window.XDomainRequest) {
      xdr = new XDomainRequest(); 
   } else if (window.XMLHttpRequest) {
     xdr = new XMLHttpRequest(); 
   } else {
      alert("Pas de cross-domain avec ce navigateur !");
   }
   return xdr;	
}
Finalement les développeurs sauront toujours ce qu'ils appellent. Mais que cela aurait été plus simple si une nouvelle class avait été créée...

ERE
1  0 
Avatar de JLC83
Membre régulier https://www.developpez.com
Le 10/07/2009 à 18:55
En tous les cas c'est plutôt une bonne nouvelle !
Parce que sincèrement, les <iframe>, les proxies, les services, ....
Un peu lourd à gérer à force ;-)
JL
1  0 
Avatar de balno
Futur Membre du Club https://www.developpez.com
Le 24/07/2009 à 2:28
Ah oui, ça ça serait une bonne nouvelle, et désolé pour ce post...
Ca doit être redondant...
1  0 
Avatar de CIFQ_Drew
Membre averti https://www.developpez.com
Le 29/07/2009 à 14:33
Désolé si ce que je vais dire est une absurdité, mais n'étais-ce pas l'adage des Web Service de permettre ce genre de chose (par SOAP) : on envoie une request à un service Web pour une information et il nous retourne la réponse dans un fichier XML ?

Pour ma part, je suis de l'avis de SpaceFrog, à savoir les limitations concernant le crossdomain.

Y'a quelqu'un qui peut dire ce que cela implique ?!?
1  0 
Contacter le responsable de la rubrique Accueil

Partenaire : Hébergement Web