Bonjour à tous,

Je développe actuellement une petite application AJAX en utilisant l'objet XmlHttpRequest. Mon problème est assez étrange: mon code ne semble fonctionner que sur Firefox 3.5 (navigateur que j'utilise pour faire mes tests), mais ce qui est encore plus étrange, c'est que si j'essaye sur une autre machine avec le même navigateur, elle ne marche plus du tout.

J'ai cerné le problème: cela vient du status de l'objet XHR: le code renvoyé est 200 quand cela fonctionne, et 0 sur les autres navigateurs/machines.

Voici le code pour générer l'objet XHR:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function getXMLHttpRequest() {
	var xhr = null;
 
	if (window.XMLHttpRequest || window.ActiveXObject) {
		if (window.ActiveXObject) {
			try {
				xhr = new ActiveXObject("Msxml2.XMLHTTP");
			} catch(e) {
				xhr = new ActiveXObject("Microsoft.XMLHTTP");
			}
		} else {
			xhr = new XMLHttpRequest(); 
		}
	} else {
		alert("Your browser doesnt handle this kind of feature. Please update it and try again.");
		return null;
	}
	return xhr;
}
Et voici la fonction qui pose problème (il s'agit d'une fonction d'authentification, c'est la première appellée et je suppose donc que le problème serait le même pour les fonctions suivantes car tous les appels ont la même structure):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function getToken(pictureId){
   var xhr = getXMLHttpRequest();
 
   xhr.onreadystatechange = function() {
      if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
			alert(xhr.status); //juste pour connaître le statut
			alert(xhr.responseText); //en théorie appel d'une fonction handler
		} 
   };
 
   var url = "http://monsite/proxys/auth.php"; //je travaille avec une API d'où nécessité de passer par un proxy (voir plus bas)
 
 
   xhr.open("GET", url, true);
   xhr.setRequestHeader( "Content-type", "text/xml" );
   xhr.send(null);
}
Cette application fonctionne en relation avec une API située sur un autre domaine, d'où le besoin de passer par un proxy situé sur mon serveur de manière à contourner les limitations cross-domain. Ce proxy est codé en PHP (utilisant l'extension cURL). Si besoin est je peux poster le code.

Je ne parviens pas à déterminer d'où le problème peut venir

Merci beaucoup pour votre aide!