|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Nouveau Membre du Club
![]() Étudiant Inscription : janvier 2008 Messages : 128 ![]() |
Bonjour à tous,
Je fais face à un problème qui vraisemblablement relève de la manière dont jQuery 1.6.1 fait les requêtes cross-domain. Mon site propose plusieurs sous-domaines dont un qui contient toutes les ressources communes (images, css, js) aux autres. J'ai donc besoin de charger régulièrement des fichiers de configuration par exemple stocké sur ce dernier (qu'on appellera racine.exemple.com dans notre cas). Lorsque je demande le chargement d'un de ces fichiers de configuration qui se présente sous la forme d'un fichier ini, j'obtiens différents messages suivant le navigateur employé. Voici tout d'abord mon code : Code javascript :
En cas d'erreur, on affiche les détails du probleme : - Sous IE9 j'obtiens ce message : Citation:
Citation:
Je précise que la requête se fait en synchrone car j'attends d'avoir chargé toute ma config côté client pour poursuivre. Je souhaite garder le format ini. Est-ce que quelqu'un aurait une explication? Merci par avance, bon week end. |
||||
|
|
00
|
|
|
#2 | |
![]() ![]() ![]() Didier MouronvalDéveloppeur Web Inscription : juin 2008 Messages : 13 807 ![]() |
Citation:
__________________
Pas de question technique par MP ! Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi ! Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi ! Mes formations video2brain : La formation complète sur JavaScript • JavaScript et le DOM par la pratique • PHP 5 et MySQL : les fondamentaux Mon livre sur jQuery
|
|
|
00
|
|
|
#3 | |
|
Nouveau Membre du Club
![]() Étudiant Inscription : janvier 2008 Messages : 128 ![]() |
Citation:
Je me permets de te poser la question de but en blanc : Alors à quoi sert le paramètre "crossDomain" dans les options de la fonction ajax() ? Cela fait deux ans que j'utilise le hack avec YQL et jQuery arrive sans problèmes à me charger du HTML depuis mon sous-domaine racine.exemple.com vers d'autres sous-domaines. Voici un exemple qui fonctionne avec l'interface de la carte : on observe clairement la période de build après le chargement du DOM, tout le HTML de l'interface est chargé depuis un autre domaine que le www http://www.infos-reseaux.com/apps/AD...=webVRD_client Alors pourquoi cela serait-il différent pour mon fichier .ini? |
|
|
|
00
|
|
|
#4 | |||
![]() ![]() Daniel HagnoulÉtudiant perpétuel Inscription : février 2009 Messages : 3 221 ![]() |
Bonsoir
Citation de la FAQ jQuery : Citation:
Citation:
Citation:
__________________
FAQ jQuery Mon cahier d’exercices sur jQuery & CoSi un message vous a aidé ou vous semble pertinent, votez pour lui ! ![]() |
|||
|
00
|
|
|
#5 | ||
|
Nouveau Membre du Club
![]() Étudiant Inscription : janvier 2008 Messages : 128 ![]() |
Bonsoir Danihagnoul, merci de ta réponse.
En fait pour moi les deux premières citations sont contradictoires, AJAX peut s'appuyer sur des requêtes cross-domain depuis l'intronisation de l'XDomainRequest, ce que doit exploiter jQuery. C'est pour cette raison que j'ai bâti mon raisonnement sur le fait que je pouvais faire du cross-domain. Et le hack qui consiste à appeler YQL qui lui-même va chercher la ressource désirée marchait avant l'apparition d'XDomainRequest. Bref, il est bien dommage que ce ne soit possible qu'en asynchrone comme le laisse entendre la 3ième citation mais je m'en contenterai. J'ai toujours un message d'erreur même si ce n'est plus le même sous FF4: -Sous FF4 : Citation:
Citation:
Mais alors pourquoi cela ne fonctionne-t-il pas? |
||
|
|
00
|
|
|
#6 |
![]() ![]() Daniel HagnoulÉtudiant perpétuel Inscription : février 2009 Messages : 3 221 ![]() |
Bonsoir
Je ne suis pas un expert en AJAX et en PHP, mais je crois savoir que :
__________________
FAQ jQuery Mon cahier d’exercices sur jQuery & CoSi un message vous a aidé ou vous semble pertinent, votez pour lui ! ![]() |
|
10
|
|
|
#7 |
|
Nouveau Membre du Club
![]() Étudiant Inscription : janvier 2008 Messages : 128 ![]() |
Très bien, je prends bonne note de tout cela.
Cependant pour la deuxième remarque, c'est ce que j'ai cherché à faire pendant un temps mais vu qu'il s'agit d'un fichier à part entière non généré par PHP, je me demande comment je peux spécifier des en-têtes supplémentaires. En passant par un fichier htaccess peut-être? Dans un contexte plus large, il m’intéresserait également de ne rendre disponibles les ressources de mon sous-domaine racine.exempl... qu'à seulement tout autre sous-domaine du domaine principal vu qu'il s'agit de ressources annexes (images/css/js) et non de contenu à proprement parler. Cette modification solutionnera peut-être mon problème, peux-tu m'en dire plus? |
|
|
00
|
|
|
#8 | |||
![]() ![]() Daniel HagnoulÉtudiant perpétuel Inscription : février 2009 Messages : 3 221 ![]() |
Bonjour
On peut bien entendu limiter l'autorisation : Code :
Je n'ai jamais utilisé le Cross-domain, vous en savez maintenant plus que moi. Mais sur le forum PHP il y a sûrement quelqu'un de plus compétent sur ce sujet. [Edit] Citation de la FAQ jQuery : Comment dois-je formuler une requête AJAX ? Citation:
__________________
FAQ jQuery Mon cahier d’exercices sur jQuery & CoSi un message vous a aidé ou vous semble pertinent, votez pour lui ! ![]() |
|||
|
00
|
|
|
#9 | |||
![]() ![]() ![]() Didier MouronvalDéveloppeur Web Inscription : juin 2008 Messages : 13 807 ![]() |
Citation:
![]() Code :
__________________
Pas de question technique par MP ! Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi ! Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi ! Mes formations video2brain : La formation complète sur JavaScript • JavaScript et le DOM par la pratique • PHP 5 et MySQL : les fondamentaux Mon livre sur jQuery
|
|||
|
00
|
|
|
#10 | ||||||||
|
Nouveau Membre du Club
![]() Étudiant Inscription : janvier 2008 Messages : 128 ![]() |
Citation:
Code :
J'ai les en-têtes HTTP suivante dans la réponse Citation:
Citation:
Citation:
En l’occurrence, je travaille avec des fichiers ini donc pas de JSONP ou de <script/>. J'ai repassé crossDomain à false et je peux donc refaire du chargement synchrone mais j’obtiens les même messages que ceux évoqués dans mon premier post, retour à la case départ. |
||||||||
|
|
00
|
|
|
#11 | ||||||
|
Nouveau Membre du Club
![]() Étudiant Inscription : janvier 2008 Messages : 128 ![]() |
Bien j'ai une solution à apporter
L'échange fonctionne maintenant normalement, j'ai du oublier de spécifier certains headers dans la réponse du serveur et probablement la méthode OPTIONS comme étant acceptée pour le cross-domain. Pour rappel et pour ceux qui liront ce topic dans 250 ans, j'utilise le code suivant Javascript pour charger le contenu de mes fichiers ini de configuration de mon côté client (pour un autre format, modifier principalement la valeur de dataType) : Code :
La requête preflight est une HTTP/1.1 OPTIONS sur l'URL visée avec les en-têtes suivantes : Citation:
Citation:
Ensuite tout se passe suivant la méthode standard. Vu que dans mon cas je souhaitait accéder à des fichiers binaires/text sans passer par PHP, voici le code définitif de mon proxy qui permet d'ajouter les en-têtes côté serveur : Code :
Merci à votre aide et bonne soirée |
||||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com