6
votes

Est-il possible de faire une demande JSONP chez HTTPS à HTTP?

Je sais qu'il y a une question presque dupliquée, mais la réponse n'est pas satisfaisante du tout.

Je dois faire du géocodage à l'aide du service OpenStreetMap qui fonctionne sur http.

Mon site fonctionne sur HTTPS.

Il semble impossible de faire la demande JSONP chez HTTPS à HTTP, le navigateur (Chrome) se plaint de contenu non sécurisé.

Toute solution?


0 commentaires

3 Réponses :


5
votes

La raison pour laquelle le navigateur se plaint de contenu non sécurisé est que le contenu n'est pas sûr. Le but entier avec une page sécurisée est que tout cela est sécurisé et peut être approuvé.

Vous pouvez configurer une page proxy de votre site sécurisé qui demande le contenu non sécurisé. Là, vous devriez vérifier le contenu avant d'être envoyé au navigateur, de sorte qu'il soit réellement sécurisé, non seulement prétendant être en sécurité.


5 commentaires

Donc, dans un véritable scénario, ma jQuery devrait ouvrir une popup dans http (seule solution que je peux penser pour), obtenir la réponse JSONP et l'analyser?


Dans un scénario réel, vous ne devez pas charger le contenu via des canaux non cryptés sur une page sécurisée. Si vous n'êtes pas sérieux sur la sécurité, utilisez simplement HTTP en premier lieu.


@Cranio: Non, le proxy dont je parle est une page sur le serveur. Vous effectuez une demande HTTPS à elle et effectue une demande HTTP au service, vérifie la réponse et le renvoie au navigateur.


@Tgr: Pas de ma faute, je Doit utiliser https sur mon site et je doit utiliser un service externe sur FTP.


@Guffa: J'ai trouvé une méthode, ajoutée comme une réponse à moi-même. N'hésitez pas à commenter



3
votes

Si vous souhaitez effectuer une demande postale à un service externe qui fonctionne sous HTTP, tandis que la demande initiale provenait de HTTPS, elle sera toujours considérée comme insécurité. Il y a aussi loin que je sache.

Ce que vous pouvez faire, est post sur votre backend qui envoie une autre requête postale au service qui fonctionne sous HTTP. À partir de là, renvoyez simplement la valeur renvoyée par le service HTTP.


3 commentaires

Vous devriez pas juste retourner la valeur du service, vous devez la valider en premier. Le proxy prend des données non sécurisées et revenant à des données sécurisées. Il doit donc assumer la responsabilité de vérifier que cela est en fait sécurisé.


À la fin, vous voulez probablement renvoyer les données, s'il est sécurisé. Sinon, il n'y a aucune utilité à effectuer la demande en premier lieu.


J'ai dit que vous devriez la valider en premier. Que pensez-vous vient ensuite? ;)



3
votes

Pour qui cela peut concerner, c'est comme ça que je les ai triés moi-même.

1) Mon code JavaScript appelle une page Ajax sur mon serveur avec le paramètre dont j'ai besoin pour transmettre au service

2) La page Ajax fait une demande via Curl à l'aide de l'adresse

3) Je désigne la réponse et transformez-le en JSON

4) avec le rappel de JavaScript, j'utilise les données


2 commentaires

Oui, ça a l'air bien. La page de proxy n'a pas à renvoyer la réponse inchangée.


@Guffa: Oui, c'est une paire de coordonnées, très facile à assainir via PHP. Merci pour ton aide :)