2009-06-29 16 views
38

Tengo un simple fragmento de código jQuery que envía un formulario y oculta/muestra algo de información en pantalla. Funciona bien cuando se prueba, hasta que se carga a través de https: // en el que se rompe en IE7. Parece que se rompe por completo, sin que ninguno de los guiones tenga ningún efecto. También recibo la advertencia de IE de que "algunos elementos son inseguros".El código jQuery simple funciona bien hasta que el sitio se carga a través de https: //

¿Alguien tiene alguna experiencia de que esto ocurra? O mejor aún, ¡una solución! Tengo que cargar la página a través de https, ya que es una página de pago con tarjeta de crédito.

Respuesta

76

Las tres respuestas anteriores toda mención al problema de una página segura "https", tratando de incluir scripts u otros recursos (hojas de estilo, imágenes, etc) de un "http" camino ...

me gustaría añadir a estos, y tenga en cuenta que si usted tiene una situación en la que las mismas páginas podrían ser cargados a través de las direcciones URL ya sea HTTP o HTTPS, entonces se pueden crear "protocolo" --- menos el protocolo se supone que es el mismo que la página actual. Tenga en cuenta que esto solo es necesario para acceder a recursos en diferentes dominios (y solo funcionará si esos dominios diferentes son compatibles con http y https), porque obviamente si está accediendo a recursos en el mismo dominio, no necesita comenzar con http: // en absoluto ...

por ejemplo, cada uno de estos tres recursos de suponer HTTP o HTTPS en función de cómo se accedió a la página actual:

<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" /> 
10

Si sirve una página a través de https://, entonces cada enlace de recurso también debe usar https://. Mirar hacia fuera para

<script type="text/javascript" src="http://.../jquery.js"></script> 
2

Si el cliente utiliza HTTPS para solicitar la página, la página debe vincular a todos los medios de comunicación (imágenes, scripts, hojas de estilo) a través de HTTPS.

Si el cliente utiliza HTTP para solicitar la página, entonces usted debe enviar este fragmento de HTML dentro de su respuesta:

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

Si el cliente utiliza HTTPS para solicitar la página, entonces usted debe enviar este fragmento de HTML dentro de su respuesta:

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

la diferencia es que, cuando el cliente solicita la página con HTTPS, el servidor envía un enlace al script de jQuery que comienza con https://.

5

Gracias por todas sus aportaciones. El problema finalmente se rastreó a una imagen mencionada en Thickbox.js.

Como tenía una url http: // (no https: //) causaba el mensaje de error. El mensaje de seguridad que aparece tiene un sí o un no para cargar contenido inseguro, y al hacer clic en sí se le ordena al navegador que deje de cargar cualquier jQuery.

Realmente complicado, así que pensé que me respondería con la esperanza de que podría ayudar a alguien más con el mismo problema.

0

También puede ver un comportamiento similar si está utilizando jQuery desde code.jquery.com

por ejemplo:

code.jquery.com no tiene un SSL válido.

Esto puede hacer que otros scripts no funcionen correctamente.

utilizan los CDN de Google o cargar el lugar jQuery desde su propio servidor

creo que sirve

+2

No es cierto. A partir del 1 de octubre de 2013, el certificado code.jquery.com ssl valida sin problemas. – m000

0

que estaba usando IE 11 como el navegador.

Solución: No utilice el modo de compatibilidad. Herramientas-> Configuración de vista de compatibilidad.

Síntomas:

Programa

había trabajado bien en el modo HTTP.

El navegador informó de un error en una línea, alegando que se esperaba un identificador.

El navegador no permite la depuración en el archivo de la biblioteca jquery. Archivo no aparece en la lista de archivos para depurar, los puntos de corte se pueden establecer en el archivo si se accede a través del mensaje de error en el registro de la consola del desarrollador , pero los puntos de interrupción se deshabilitaron.

El navegador muestra claramente que el archivo se ha cargado correctamente.

No se ha producido ningún error al utilizar un navegador diferente.

Sugerencia: eliminé el programa de prueba para cargar el archivo de la biblioteca jquery y un solo div que mostraba el texto fijo, por lo que no había ningún código propio que fuera incorrecto. Eso simplificó enormemente la lista de lo que podría estar mal.

Cuestiones relacionadas