Question

Lors de l'utilisation de XMLHTTPRequest en javascript, je souhaite l'envoyer à un site Web externe plutôt qu'à celui sur lequel le fichier .js est hébergé. Pour l’envoyer à test.php sur le serveur actuel, j’utiliserais

request.open("POST", "test.php", true);

mais pour le deuxième argument, comment puis-je l'envoyer à un autre site. " exemple.com/test.php" recherche un fichier sur le serveur actuel et " http://example.com/test.php " semble juste échouer carrément.

Était-ce utile?

La solution

Vous ne pouvez pas pour des raisons de sécurité. Voir la règle de provenance identique pour JavaScript.

Certaines solutions de contournement exploitent les bogues du navigateur ou les cas particuliers, mais leur utilisation n'est pas recommandée.

La meilleure approche consiste à avoir un proxy côté serveur qui reçoit les demandes Ajax et, à son tour, envoie les demandes HTTP à d'autres serveurs. Cela doit être soigneusement mis en œuvre en nettoyant les entrées et en mettant en liste blanche les types de demandes envoyées et les serveurs contactés.

Autres conseils

Cela ressemble à un mauvais cas de règle de provenance identique , mon ami:)

Vous ne pouvez pas (pour la plupart) utiliser XmlHttpRequest pour obtenir des données d'un site Web externe. Ce que vous pouvez faire, cependant, est de créer de manière dynamique une balise SCRIPT et de référencer une adresse externe. jQuery encapsule cette fonctionnalité dans le cadre de sa gestion ajax.

En effet, vous pouvez. Pas dans n'importe quel navigateur bien que.

Dans Internet Explorer 8.0, il existe XDomainRequest , un objet permettant des requêtes interdomaines. Vous auriez besoin de gérer correctement la demande faite avec cet objet sur le serveur en envoyant d’abord l’en-tête Access-Control-Allow-Origin avec " * " ou nom de domaine demandeur.

Puisque vous faites quand même des choses difficiles, pourquoi ne pas essayer de les utiliser d'abord sur IE8?

Si vous avez le contrôle sur le serveur, vous pouvez utiliser cet en-tête dans la réponse HTTP, bien qu'il puisse ne pas fonctionner avec tous les navigateurs.

Access-Control-Allow-Origin: *
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top