Bonjour,

Je séche sur ce truc depuis quelques jours... Aussi je me permet de poser la question ici.

Je souhaite intégrer dans un site situé sur le serveur A des requêtes Ajax vers des scripts hébergés sur le serveur B, avec des domaines différents... Normalement, un browser sérieux interdit cela...

Pour le moment, j'ai pensé à ça :

une fonction Javascript :

Code javascript : 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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
 
/* ------------------------------------------------------------------------------------------------------------
 
	ProxyLoadXML(url, addData)
 
	loads an XML document from the given url and returns its reference
 
	(object XMLDocument)
 
	Actually, this function performs like LoadXML, but url is reached by the
 
	meaning of a PHP 'proxy' (proxy.php), to allow cross sites access.
 
	addData stands for passing extra parameters (a string with parameters
 
	separated by semi-colons)
 
	if addData is set (aka length > 0), each parameter POST-transmitted this way :
 
	param0 = ...1st parameter...
 
	param1 = ...2nd parameter...
 
	...
 
---------------------------------------------------------------------------------------------------------------- */
 
 
 
function ProxyLoadXML(url, addData) {
 
	var xhr = CreateAjax();
 
	var postVars = 'uri='+url;
 
	// traitement des paramètres aditionnels
 
	if(addData.length) {
 
		var reg=new RegExp("[;]+", "g");
 
		var params = new Array;
 
		params = addData.split(reg);
 
		for (var i = 0; i < params.length; i++) {
 
			postVars += '&param' + i + '=' + params[i];
 
		}
 
	}
 
	xhr.open("POST", 'proxy.php?'+urlend() , false);
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xhr.setRequestHeader("Content-length", postVars.length);
	xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
	xhr.setRequestHeader('Accept', 'text/javascript, text/html, text/plain, application/xml, text/xml, */*');
	xhr.onreadystatechange=function() {
		if (xmlhttp.readyState == 4)  {
			/* 4 : état "complete" */
			if (xmlhttp.status != 200) {
				// 200 : code HTTP pour OK
				// Traitement de la réponse. Ici on affiche la réponse dans une boîte de dialogue.
				alert('Le serveur a renvoyé une erreur.');
			}
		}
	}
 
	xhr.send(postVars); 
 
	return xhr.responseXML;
 
}

En fait, cette fonction envoit la requête à un script php situé sur le serveur A (proxy.php) qui va juste lire le fichier sur le serveur B:

Code php : 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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 
<?php
 
 
header("content-type: text/plain");
 
// Je récupére l'uri du script à utiliser sur l'autre serveur
 
$url = $_POST['uri'];
 
 
// j'ouvre le script en lecture
 
$handle = fopen($url, "r");
 
 
 
// si tout va bene, je renvoit le résultat
 
if ($handle) {
 
    while (!feof($handle)) {
 
        $buffer = fgets($handle, 4096);
 
        echo $buffer;
 
    }
 
    fclose($handle);
 
}
 
 
 
?>

Ca fonctionne, mais comme un gros malin que je suis, je me rend compte que les paramètres passés en POST avec cette méthode restent coincés dans proxy.php !!! Impossible de les retrouver dans le script php sur le serveur B, évidemment... Cela dit, c'est déjà pas mal de pouvoir requêter Ajax, même sans les variables POST

Merci pour toute idée, elle sera la bienvenue, croyez moi !
Et merci aussi de votre indulgence pour ce premier post sur ce forum.

François.