web-dev-qa-db-fra.com

Jquery charge https url

J'ai ce problème. Dans le site Web externe, j'ai un script comme celui-ci:

<div id="idtest"></div>
<script src="//example.com/widget.js" type="text/javascript"></script>

example.com est en https (autoriser http et https). Dans le serveur dans le script widget.js j'ai:

 $('#idtest').load("https://example.com/index.html")

Le message d'erreur suivant s'affiche: Contenu mixte: la page située sur 'thepage' a été chargée via HTTPS, mais elle a demandé un noeud final XMLHttpRequest non sécurisé ' http://example.com/index.html '. Cette demande a été bloquée. le contenu doit être servi sur HTTPS.

Je ne comprends pas: pourquoi l'erreur et pourquoi le noeud final est-il dans "http"? Merci

MODIFIER

Plus d'information: 

si dans le widget.js je fais ceci:

 $('#idtest').load("./index.html")

le contenu est chargé et tout fonctionne parfaitement si je charge le script sur mon site. 

Si je fais quelque chose comme:

 x = "https://example.com"
 $('#idtest').load(x + "/index.html")

ou 

 $('#idtest').load("https://example.com/index.html")

Je reçois l'erreur (si je mets le script sur mon site ou sur un site externe). Pourquoi?

EDIT 2

plus d'informations:

mon site est à Django 

EDIT 3

Dans Firefox, je charge la page en https et http. Cela ne fonctionne pas dans Chrome. Je vois cette situation dans firefox net analyzer lorsque vous appelez l’URL:

302 https://example.com/index.html 200 http://example.com/index.html [contenu mixte]

Que comprennent cette situation (https to http)? Peut-être un problème de redirection Django?

7
RoverDar

A erreur de contenu mixte se produit lorsque:

  • vous essayez de charger du contenu sécurisé SSL (https) sur une page servie de manière non sécurisée (http)

Ou le contraire

  • vous essayez de charger du contenu non sécurisé (http) sur une page servie en toute sécurité SSL (https) servie

Votre message d'erreur vous avertit que votre page d'appel a été chargée en mode non sécurisé.

Vous n'avez pas explicitement expliqué cela, mais votre erreur a indiqué que votre page était en cours de traitement sans SSL. Lorsque vous essayez de charger une ressource protégée, cela devient un mode mixte problème de ressources protégées et non sécurisées.


Si possible, essayez de servir le fichier de référence de la même manière

  • Vous pouvez servir votre page principale dans SSL (https)

  • Vous pouvez demander la page partielle dans http

    $ ('# idtest'). load (" http://example.com/index.html ")

ou

  • Tout comme vous l'avez résolu, demandez la page partielle sans protocole. Maintenant, votre fichier chargé sera chargé en utilisant le protocole utilisé par votre page.

A propos de votre ressource spécifique:

J'ai essayé de charger:

http://example.com/index.html

et

https://example.com/index.html

Le résultat était le même. J'ai une simple page avec le message:


Exemple de domaine

Ce domaine est établi pour être utilisé à titre d’exemple dans les documents. Vous pouvez utiliser ce domaine dans des exemples sans coordination préalable ni demande d'autorisation.

Plus d'information...

12
Dave Alperovich

Je pense que c'est plus un problème de domaine d'origine croisée. 

la fonction $ .load de jquery utilise ajax pour charger l'URL et vous ne pouvez donc pas effectuer d'appel entre domaines si l'URL cible n'implémente pas les en-têtes CORS.

Dans votre exemple, le serveur exemple.com doit retourner un en-tête.

Access-Control-Allow-Origin: *

Vous pouvez également remplacer * par le domaine de la page qui souhaite charger le contenu par AJAX.

Un bon article de blog sur la façon d'utiliser CORS: http://www.html5rocks.com/en/tutorials/cors/

1
Julien Bachmann

J'ai eu ce problème sur la page Web de Ruby on Rails et l’erreur était d’utiliser l’aide "_url" au lieu de l’aide "_path", sur une page Web https:

dans une vue : faux: borrar_linea_factura_url(l)

ok: borrar_linea_factura_path(l) 

En résumé de ce qui a été dit auparavant:

L'assistant "_url" génère /controller/action/params 

L'assistant "_path" génère https://controller/action/params

0
Albert Català