Ajax utilisant https sur une page http

Mon site utilise le protocole http et https; cela n’affecte pas le contenu. Mon site utilise les appels ajax jQuery, qui remplissent également certaines zones de la page.

Maintenant, je voudrais faire tous les appels ajax sur https. (s’il vous plaît ne me demandez pas pourquoi :)) Lorsque je suis sur une page avec le protocole https, les requêtes ajax fonctionnent. Lorsque je suis sur une page avec le protocole http, je reçois une erreur javascript: access à l’URI restreint refusé

Je sais que c’est un problème interdomaine (en fait, c’est un problème de protocole croisé), et je sais que je devrais utiliser le même protocole dans les appels ajax que sur la page actuelle.

Cependant, je veux que tous les appels ajax soient https et appelez-les sur une page qui a été diffusée via http. Existe-t-il une solution pour y parvenir (une solution json / proxy?) Ou est-ce simplement impossible?

Ajoutez l’en-tête Access-Control-Allow-Origin du serveur

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

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

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 déployer votre propre mécanisme autour de l’iframe.

Personnellement, je voudrais simplement redirect le formulaire http: // vers le https: // one

http://example.com/ peut se transformer en un VirtualHost différent de https://example.com/ (qui, comme l’en-tête Host n’est pas envoyé, répond à la valeur par défaut de cette adresse IP), de sorte que les deux sont traités séparément domaines et donc soumis aux ressortingctions JS de crossdomain.

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

Découvrez le projet OpenSource Forge. Il fournit une implémentation JavaScript TLS, ainsi que quelques Flash pour gérer les requêtes interdomaines réelles:

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

En bref, Forge vous permettra de faire XmlHttpRequests à partir d’une page Web chargée via http sur un site https. Vous devrez fournir un fichier de règles Flash interdomaine via votre serveur pour activer les requêtes interdomaines. Consultez les billets de blog à la fin du README pour obtenir une explication plus détaillée de son fonctionnement.

Cependant, je dois mentionner que Forge convient mieux aux requêtes entre deux domaines https différents. La raison en est qu’il y a une attaque potentielle du MiTM. Si vous chargez JavaScript et Flash depuis un site non sécurisé, cela pourrait être compromis. L’utilisation la plus sûre consiste à le charger depuis un site sécurisé, puis à l’utiliser pour accéder à d’autres sites (sécurisés ou non).

Vous pouvez essayer de charger la page https dans un iframe et acheminer toutes les requêtes ajax dans / hors du cadre via un pont, c’est un hackaround, mais cela pourrait fonctionner (pas certain d’imposer les mêmes ressortingctions d’access compte tenu du contexte sécurisé) . Sinon, un proxy http local pour redirect les requêtes (comme tout appel interdomaine) serait la solution acceptée.

Voici ce que je fais:

Générez un iFrame masqué avec les données que vous souhaitez publier. Puisque vous contrôlez toujours cette iFrame, la même origine ne s’applique pas. Ensuite, envoyez le formulaire dans cet iFrame à la page ssl. La page ssl redirige ensuite vers une page non ssl avec des messages d’état. Vous avez access à l’iFrame.