Aller au contenu

Appel http depuis une page en https


captain_torche

Sujets conseillés

On vient de me faire remonter un souci : sur notre site en https, les requêtes AJAX s'effectuent (bien qu'elles soient en chemin relatif dans les fichiers) quoi qu'il arrive en http, et nous génèrent l'erreur suivante :

XMLHttpRequest cannot load http://mon-site.com/mon_script_ajax.php. Request header field X-Requested-With is not allowed by Access-Control-Allow-Headers.

En ajoutant cette ligne dans le fichier de configuration :


header("Access-Control-Allow-Origin: *");

Le message devient :

Request header field X-Requested-With is not allowed by Access-Control-Allow-Headers.

Mais je n'arrive pas à trouver d'information comment (En PHP ou côté serveur) je pourrais configurer cette autorisation.

Lien vers le commentaire
Partager sur d’autres sites

Le problème du crossdomain en ajax se situe au niveau des navigateurs me semble t'il, si j'ai bien compris ton souci, jouer avec les headers ne changera rien.

Tu as plusieurs solutions:

- la première est d'utiliser un php proxy sur le site http qui fait la requête sur le site https,

- la seconde est d'utiliser jsonp comme datatype de retour (je n'ai jamais eu l'occasion d'essayer, mais il parait que ça fonctionne : http://api.jquery.com/jQuery.ajax/ & http://fcargoet.evolix.net/2009/02/jsonp-avec-jquery/ , ça a le mérite d'être simple à mettre en place).

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines plus tard...

Le fichier se trouve déjà sur le même serveur, je n'ai pas de souci de proxy. Mais apparemment il est appelé en http (Alors que l'appel est relatif) et cela bloque avec la page en https.

Il faudrait que je fasse des tests sur le jsonp, mais ça impliquerait une sacrée refonte.

Lien vers le commentaire
Partager sur d’autres sites

Il n'y a pas vraiment de refonte à faire, dans la fonction $.ajax() de jQuery, au lieu de

dataType='json'

tu mets :

dataType='jsonp'

Cela résout les blocages dûs au same origin policy, blocages qui surviennent lorsque la requête est cross-domain (même si c'est sur le même serveur), ou bien quand c'est sur un protocole différent (et je suppose que https et http sont considérés comme différents).

Je fais souvent des call ajax sur les flux de Twitter, qui sont en https et sur un domaine différent, et avec jsonp ça marche très bien :)

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...