98 votes

Ajax en utilisant https sur une page http

Mon site utilise le protocole http et https, protocole; il n'affecte pas le contenu. Mon site utilise jQuery, les appels ajax, qui remplit certaines zones de la page, trop.

Maintenant, je voudrais faire tous les appels ajax via https. (svp ne me demandez pas pourquoi :)) Quand je suis sur une page avec le protocole https, les requêtes ajax sont de travail. Quand je suis sur une page avec le protocole http, j'obtiens une erreur javascript: L'accès restreint à des URI refusé

Je sais que c'est un problème de domaine (en fait, c'est une croix problème de protocole), et je sais que je dois utiliser le même protocole dans les appels ajax que sur la page en cours.

Encore, je veux tous les appels ajax pour être en https, et de les appeler sur une page qui a été servi par le protocole http. Est-il une solution de contournement pour le faire (certains json/solution proxy?), ou est-ce tout simplement impossible?

57voto

DalSoft Points 1827

Ajouter l'en-tête Access-Control-Allow-Origin à partir du serveur

 Access-Control-Allow-Origin: https://www.mysite.com
 

http://en.wikipedia.org/wiki/Cross-Origin_Resource_Sharing

11voto

Javier Points 33134

Essayez JSONP.

la plupart des bibliothèques JS le rendent aussi simple que les autres appels AJAX, mais utilisent en interne un iframe pour effectuer la requête.

Si vous n'utilisez pas JSON pour votre charge utile, vous devrez alors faire tourner votre propre mécanisme autour de l'iframe.

Personnellement, je voudrais simplement rediriger la page http: // vers la page https: //

8voto

ceejayoz Points 85962

http://example.com/ peut résoudre un hôte virtuel différent de https://example.com/ (qui, étant donné que l'en-tête de l'hôte n'est pas envoyé, répond à la valeur par défaut pour cette adresse IP), les deux sont traités séparément. domaines et donc soumis aux restrictions JS interdomaines.

Les rappels JSON peuvent vous permettre d'éviter cela.

4voto

dlongley Points 811

Découvrez l'opensource Forge projet. Il fournit un JavaScript TLS mise en œuvre, avec un peu de Flash pour gérer l'effectif des requêtes inter-domaine:

http://github.com/digitalbazaar/forge/blob/master/README

En bref, Forge vous permettra de faire des XmlHttpRequests partir d'une page web chargée via http sur un site en https. Vous devrez fournir un Flash fichier de régulation interdomaines par l'intermédiaire de votre serveur pour activer les requêtes inter-domaine. Découvrez les articles du blog à la fin de ce fichier pour obtenir une explication plus approfondie de la façon dont il fonctionne.

Cependant, je dois mentionner que la Forge est mieux adapté pour les demandes entre les deux différents https-domaines. La raison en est qu'il y a un potentiel d'attaque de type MiTM. Si vous chargez le JavaScript et le Flash à partir d'un non-sécurisé sur le site, il pourrait être compromise. Le plus sûr utiliser est de le charger à partir d'un site sécurisé et ensuite l'utiliser pour accéder à d'autres sites (sécurisée ou non).

2voto

Quintin Robinson Points 41988

Vous pouvez essayer de charger la page https dans une iframe et acheminer toutes les demandes ajax dans / hors du cadre via un pont. C'est un hackaround mais cela pourrait fonctionner (vous ne pouvez pas savoir si cela imposera les mêmes restrictions d'accès compte tenu du contexte sécurisé) . Sinon, un proxy http local pour rediriger les demandes (comme tout appel entre domaines) constituerait la solution acceptée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X