Une question à propos de la croix-domaine (sous-domaine) à une requête ajax
Disons que j'ai la page principale chargé de http://www.example.com/index.html. Sur cette page, il y a du code js qui fait une requête ajax http://n1.example.com//echo?message=hello. Lors de la réception de la réponse à une div sur la page d'accueil est mis à jour avec le corps de la réponse.
Cela fonctionne sur tous les navigateurs populaires?
Edit:
La solution évidente est de mettre un proxy en face de www.example.com et n1.example.com et le configurer de sorte que chaque demande d'aller à un sous-ressource de http://www.example.com/n1 obtient mandaté pour http://n1.example.com/.
- Probablement pas. Ce sont deux noms de domaine différents, afin de la croix-demande de domaine ainsi bloqués par les navigateurs.
Vous devez vous connecter pour publier un commentaire.
Croix de domaine est entièrement un sujet différent. Mais la croix de sous-domaine est relativement facile. Tout ce que vous devez faire est de définir le document.nom de domaine d'être le même dans les deux page parent et l'iframe page.
Plus d'info ici
Remarque: cette technique va uniquement vous permettent d'interagir avec iframes à partir de parents de votre domaine. Il ne pas modifier l'Origine envoyé par XMLHttpRequest.
Une autre solution qui peut ou peut ne pas fonctionner pour vous est d'insérer dynamiquement/supprimer des balises script dans votre DOM qui pointent vers le domaine cible. Cela ne fonctionnera que si l'objectif de rendement json et prend en charge une fonction de rappel.
Fonction pour gérer le résultat:
Au lieu de faire une requête AJAX vous insérer dynamiquement quelque chose comme ceci:
Tous les navigateurs modernes soutien de la SCRO et maintenant, nous devons tirer parti de cet ajout.
Il fonctionne sur une simple poignée de main technique ont été les 2 domaines de la communication confiance les uns les autres par des en-têtes HTTP envoyés/reçus. Cela a été longtemps attendu que la même règle d'origine est nécessaire pour éviter les attaques de type XSS et d'autres malveillant tente.
De lancer une de la croix-origine de la demande, le navigateur envoie la demande à l'Origine de l'entête HTTP. La valeur de cet en-tête est le site qui a servi en de la page. Par exemple, supposons qu'une page sur http://www.example-social-network.com tentatives d'accès à des données d'un utilisateur dans online-personal-calendar.com. Si le navigateur de l'utilisateur met en œuvre la SCRO, les suivantes en-tête de demande sera envoyé:
Origine: http://www.example-social-network.com
Si online-personal-calendar.com permet la demande, il envoie un Access-Control-Allow-Origin-tête dans sa réponse. La valeur de l'en-tête indique quels sites d'origine sont autorisées. Par exemple, une réponse à la précédente demande devrait contenir les éléments suivants:
Access-Control-Allow-Origin: http://www.example-social-network.com
Si le serveur n'autorise pas la croix-origine de la demande, le navigateur va livrer une erreur example-social-network.com page au lieu de la online-personal-calendar.com réponse.
Pour permettre l'accès à toutes les pages, un serveur peut envoyer la réponse suivante d'en-tête:
Access-Control-Allow-Origin: *
Toutefois, cela pourrait ne pas être approprié pour les situations dans lesquelles la sécurité est une préoccupation.
Très bien expliqué ici en-dessous de la page wiki.
http://en.wikipedia.org/wiki/Cross-origin_resource_sharing
Une autre solution, est de diriger la requête ajax php (par exemple) de la page sur votre domaine, et dans cette page, faites une demande cURL pour le sous-domaine.
Nouvelle idée: si vous voulez de la croix de sous-domaine (www.domain.com et sub.domain.com) et vous travaillez sur un serveur apache. les choses peuvent devenir beaucoup plus facile. si un sous-domaine est en fait un sous-répertoire public_html (sub.domain.com = http://www.domain.com/sub/. donc, si vous avez ajax.domain.com/?request=subject...you pouvez faire quelque chose comme ceci: http://www.domain.com/ajax/?request=subject
fonctionne comme un charme pour moi, et pas stupide hacks, des mandataires ou des choses difficiles à faire pour quelques requêtes Ajax!
La solution la plus simple que j'ai trouvé était de créer un php sur votre sous-domaine et inclure l'original de votre fichier de fonction à l'intérieur à l'aide d'un chemin d'accès complet.
Exemple:
Sous-domaine:
Créer:
sub.domain.com/I_need_the_function.php
Maintenant appel sub.domain.com/I_need_the_function.php à partir de votre javascript.
L'exemple est aussi simple que je peux le faire. Vous pouvez utiliser de la meilleure formaté chemins.
J'espère que cela aide quelqu'un. Rien de désordonné ici - et vous appelez le fichier d'origine, de sorte que toute modification s'appliquera à toutes les fonctions.
J'ai écrit une solution pour traverser sous-domaine et de son été à travailler pour mes applications. J'ai utilisé iframe et le paramétrage de documents.domain="domain.com" sur les deux côtés. Vous pouvez trouver ma solution :
https://github.com/emphaticsunshine/Cross-sub-domain-solution