jQuery ajax ne fera pas de requêtes HTTPS

Je fais des trucs jQuery assez basiques sur mon site, et j’ai plein de problèmes.

Voici le code correspondant:

$(document).ready( function() { $("#getdatabutton").click( function() { $.ajax({ url: "/jsontest/randomdata", type: "get", data: [{name:"ymax", value:$("#randomgraph").height()}, {name:"count", value:$("#countinput").val()}, {name:"t", value:Math.random()}], success: function(response, textStatus, jqXHR) { data = JSON.parse(response); updateGraph(data); $("#result").html(response); if(data["error"] == "") { $("#errorbox").html("None"); } else { $("#errorbox").html(data["error"]); } }, error: function(jqXHR, textStatus, errorThrown) { $("#errorbox").html(textStatus + " " + errorThrown); } }); }); }); 

La page est chargée via HTTPS, mais les XMLHttpRequests semblent sortir via HTTP.

J’ai même essayé de changer l’URL à l’URL absolue ( https://larsendt.com/jsontest/randomdata ), et il envoie toujours la requête à la version HTTP de mon site.

Naturellement, comme la demande va à un protocole différent, l’appel ajax échoue (cross-domain et tout ça).

Comme indiqué par Chrome:

 The page at https://larsendt.com/jsontest/ displayed insecure content from http://larsendt.com/jsontest/randomdata/?ymax=500&count=32&t=0.08111811126582325. 

La seule autre information pertinente à laquelle je peux penser est que je demande à nginx de faire une redirection 301 de http://larsendt.com vers https://larsendt.com , mais je ne vois pas comment cela pourrait casser quelque chose (je crois que c’est une pratique assez standard).

Si vous voulez une démonstration en direct, la version endommagée est toujours disponible sur https://larsendt.com/jsontest .

En tout cas, merci d’avance.

Essayez de corriger l’URL pour que votre serveur n’ait pas à redirect

 url: "/jsontest/randomdata/" // there was a missing trailing / // ie https://larsendt.com/jsontest/randomdata?ymax=500&count=32&t=0.9604179110508643 // was going to https://larsendt.com/jsontest/randomdata/?ymax=500&count=32&t=0.9604179110508643 

301 Redirection permanente peut être en train de se produire. Pour vérifier exécuter Fiddler et regarder la colonne Résultat. Généralement 200 codes, mais j’ai repéré un code 301.

L’appel https jquery ajax était redirigé vers http , provoquant l’erreur de contenu mixte.