web-dev-qa-db-fra.com

Le code jQuery simple fonctionne bien jusqu'à ce que le site soit chargé via https: //

J'ai un simple morceau de code jQuery qui soumet un formulaire et cache/affiche certaines informations à l'écran. Cela fonctionne bien une fois testé, jusqu’à ce qu’il soit chargé via https: // sur lequel il tombe en panne dans IE7. Il semble casser totalement, aucun des scripts n’ayant aucun effet. Je reçois également le message IE signalant que "certains éléments ne sont pas sécurisés".

Quelqu'un at-il une expérience de ce qui se passe? Ou mieux encore, une solution! Je dois charger la page via https en tant que page de paiement par carte de crédit.

39
Plasticated

Les trois réponses précédentes mentionnent toutes le problème d'une page sécurisée "https" essayant d'inclure des scripts ou d'autres ressources (feuilles de style, images, etc.) à partir d'un chemin "http" ... 

Je voudrais ajouter à ceux-ci, et notez que si vous avez une situation où les mêmes pages pourraient être chargées via soit http ou https, vous pouvez créer des URL "sans protocole" - le protocole sera supposé être le même que la page en cours. Notez que cela n’est nécessaire que pour accéder aux ressources de différents domaines (et ne fonctionnera que si ces différents domaines prennent en charge http et https), car il est évident que si vous accédez à des ressources sur le même domaine, vous n’avez pas besoin de commencer par http: // du tout...

Par exemple, chacune de ces trois ressources suppose http ou https en fonction de la méthode utilisée pour accéder à la page en cours:

<script src="//www.example.com/whatever.js" type="text/javascript"></script>
<img src="//www.example.com/someimage.png" alt="whatever" />
<link href="//www.example.com/styles.css" rel="stylesheet" />
78
Funka

Si vous servez une page via https://, chaque lien de ressource devrait également utiliser https://. Attention à

<script type="text/javascript" src="http://.../jquery.js"></script>
11
John Kugelman

Merci pour tous vos commentaires. Le problème a finalement été retrouvé dans une image mentionnée dans Thickbox.js.

Parce que cela avait une URL http: // (pas https: //), il était à l'origine du message d'erreur. Le message de sécurité qui s'affiche contient un oui ou un non pour le chargement de contenu non sécurisé. Un clic sur oui indiquait au navigateur d'arrêter le chargement de jQuery.

Une question délicate, alors j’ai pensé que je me répondrais dans l’espoir que cela pourrait aider quelqu'un d'autre avec le même problème.

5
Plasticated

Si le client utilise HTTPS pour demander la page, celle-ci doit alors renvoyer tous les médias (images, scripts, feuilles de style) via HTTPS.

Si le client utilise HTTP pour demander la page, vous devez alors envoyer ce fragment HTML dans votre réponse:

<head>
    <script
        type="text/javascript"
        src="http://my.domain.com/app/media/jquery.js"
    ></script>
</head>

Si le client utilise HTTPS pour demander la page, vous devez alors envoyer ce fragment HTML dans votre réponse:

<head>
    <script
        type="text/javascript"
        src="https://my.domain.com/app/media/jquery.js"
    ></script>
</head>

La différence est que, lorsque le client demande la page avec HTTPS, le serveur renvoie un lien vers le script jQuery qui commence par https://.

2
yfeldblum

J'utilisais IE 11 comme navigateur.

Solution: N'utilisez pas le mode de compatibilité. Outils-> Paramètres d'affichage de compatibilité.

Symptômes:

Le programme a bien fonctionné en mode http. 

Le navigateur a signalé une erreur sur une ligne, affirmant qu'un identifiant était attendu. 

Le navigateur n'autorise pas le débogage sur le fichier de bibliothèque jQuery. Le fichier n'a pas apparaissent dans la liste des fichiers à déboguer, des points de rupture peuvent être définis sur le fichier si accédé via le message d'erreur dans le .__ du développeur. journal de la console, mais les points d'arrêt ont été désactivés. 

Le navigateur a clairement indiqué que le fichier avait été chargé avec succès. 

Aucune erreur n'est apparue lors de l'utilisation d'un autre navigateur.

Astuce: J'ai simplifié le programme de test pour charger le fichier de bibliothèque jQuery et un div qui affichait un texte fixe, de sorte qu'aucun de mes propres codes ne risque de mal tourner. Cela a grandement simplifié la liste de ce qui pourrait être erroné.

0
david wendelken

Vous pouvez également voir un comportement similaire si vous utilisez jquery fromcode.jquery.com

par exemple: 

code.jquery.com n'a pas de SSL valide. 

Cela pourrait empêcher d'autres scripts de fonctionner correctement.

utilisez plutôt le cdn de google ou chargez le jquery à partir de votre propre serveur

J'espère que ça aide 

0
Fry