Navigateurs : Les dernières versions proposent des solutions d'AJAX entre domaines.
Allons-nous vers une généralisation ?
Le 2009-07-07 13:16:51, par Bovino, Rédacteur
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 ?
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 :
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 ?
-
SpaceFrogRédacteur/Modérateurniveau securité .. faut voir les limitations du crossdomain
c'est sur que ça faciliterait la tache de recupérer juste du texte ou du xml ..le 07/07/2009 à 13:55 -
stailerMembre chevronné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 ?le 07/07/2009 à 15:58 -
RomainVALERIExpert confirmé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 supposele 07/07/2009 à 16:19 -
lunatixRédacteurc'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.le 07/07/2009 à 23:38
-
BovinoRédacteur
Envoyé par stailer
Code : 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24var 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 }
le 09/07/2009 à 13:29 -
DoubleUMembre expérimenté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.le 09/07/2009 à 17:27 -
emmanuel.remyExpert confirmé+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.Code : 1
2
3
4
5
6
7function getXMLHTTP(){ var xhr=null; ... return xhr; }
Code : 1
2
3
4
5
6
7
8
9
10
11
12function 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; }
EREle 10/07/2009 à 11:28 -
JLC83Membre régulierEn 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 ;-)
JLle 10/07/2009 à 18:55 -
balnoFutur Membre du ClubAh oui, ça ça serait une bonne nouvelle, et désolé pour ce post...
Ca doit être redondant...le 24/07/2009 à 2:28 -
CIFQ_DrewMembre avertiDé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 ?!?le 29/07/2009 à 14:33