web-dev-qa-db-fra.com

Réécriture d'URL - javascript interdomaine

J'ai un site site.domain1.com qui doit lancer le contenu d'un autre domaine - content.domain2.com, mais je rencontre des problèmes JS inter-domaines lorsque je le fais directement.

J'ai essentiellement besoin de faire croire à site.domain1.com que le contenu de domain2 provient réellement de domain1.com. J'ai lu que la réécriture d'URL dans IIS7 pourrait être la solution, est-ce possible?

2
U01SFA3

Le problème que vous rencontrez est résolu avec CORS :

La norme de partage des ressources entre origines croisées consiste à ajouter de nouveaux en-têtes HTTP permettant aux serveurs de décrire l'ensemble des origines autorisées à lire ces informations à l'aide d'un navigateur Web. De plus, pour les méthodes de requête HTTP pouvant avoir des effets secondaires sur les données utilisateur (en particulier pour les méthodes HTTP autres que GET ou pour l'utilisation de POST avec certains types MIME), la spécification impose aux navigateurs de "contrôler en amont". la demande, sollicitant des méthodes prises en charge auprès du serveur avec une méthode de demande HTTP OPTIONS, puis, après "approbation" du serveur, envoyant la demande réelle avec la méthode de demande HTTP réelle. Les serveurs peuvent également indiquer aux clients si les "informations d'identification" (y compris les données de cookies et d'authentification HTTP) doivent être envoyées avec les demandes.

https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

Vous devez ajouter des en-têtes, à partir du serveur, à la réponse indiquant au navigateur qui a fait la demande que vous ferez confiance à d'autres domaines Origin. Ce lien passe en revue le processus et les en-têtes requis. Vous ajoutez des en-têtes tels que:

Access-Control-Allow-Origin "*";
Access-Control-Allow-Methods "GET, POST, PUT, OPTIONS, DELETE";
Access-Control-Allow-Headers "Authorization,Content-Type,Accept";
Access-Control-Allow-Credentials "true";

Le premier en-tête indique au navigateur d'autoriser les requêtes inter-serveurs à partir du code JS de votre site. Cette approche pose des problèmes de sécurité, raison pour laquelle cela n’est pas autorisé directement.

3
jmq

La réécriture d'URL ne résoudra pas à elle seule votre problème. La réécriture ne peut réécrire que les URL locales, pas les URL d’autres sites.

Vous recherchez peut-être le concept de "proxy inverse". C'est-à-dire que votre serveur Web récupère le contenu d'un autre site et le republie dynamiquement sur votre propre domaine. Ensuite, votre JavaScript pourrait accéder à ces données sans problèmes croisés.

Voici un article sur la configuration du proxy inverse à l'aide d'IIS, du réécriture d'URL et d'ARR.

Vous pouvez également regarder dans AJAX inter-domaine . Il semble que JSONP ou Access-Control-Allow-Origin pourrait être une bonne option pour vous.

0