Jump to content
Sign in to follow this  
captain_torche

Appel http depuis une page en https

Recommended Posts

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.

Share this post


Link to post
Share on other 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).

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other 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 :)

Share this post


Link to post
Share on other sites

Le même domaine certes, mais ca induit un souci de crossdomain quoiqu'il en soit

Share this post


Link to post
Share on other sites

@Ernestine : il faut que je vérifie, mais je crois que mes fichiers n'utilisent pas JSON.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...