2011-10-27 27 views
21

Acabo de agregar un SSL a mi sitio. Cuando voy al https://mydomain.com veo el texto pero no hay CSS o imágenes. Está en un servidor dedicado y tengo un control total del código.¿Por qué las imágenes y CSS no se muestran en HTTPS?

Actualmente, todas las rutas son relativas. Puedo ver imágenes y css cuando voy directamente a esos archivos, ya sea usando HTTP o HTTPS. Pero cuando me carga una página que no están cargando ...

Cuando uso de Firebug y miro en NET, que veo para cada imagen 302 Found. Qué significa eso?

¿Qué cambios necesito hacer para asegurarse de que el sitio http y https pantalla de manera similar?

¿Hago que todas las rutas sean absolutas? ¿Hay alguna manera de hacer un solo cambio para afectar a todos o tengo que ir y cambiar todos y cada uno?

Gracias.

Respuesta

10

¿Tiene la protección hotlink? Si has intentado desactivarlo Y mira si ayuda.

+0

lugar de su desactivación se podría escribir (en su .htaccess) algo como esto: RewriteCond% {}^HTTP_REFERER http (s):? (Www. \)? // XXX.com – user2992220

+4

Qué es la protección hotlink? –

2

No es necesario hacer todo lo absoluto, pero hay que asegurarse de que su CSS y las imágenes son accesibles a través de SSL. Intente acceder a ellos directamente, o use Firebug o una herramienta de navegador similar para averiguar de dónde está tratando de cargarlos. Considere el uso de "URL relativas al protocolo" para que siempre se acceda a CSS, imágenes y demás utilizando el mismo protocolo (http o https) que la página en sí. http://paulirish.com/2010/the-protocol-relative-url/

+0

Puedo ver mis imágenes y CSS con HTTP y HTTPS, pero obviamente no se cargan. También cuando voy a mi página HTTPS y veo el código fuente en FF y luego hago clic en un enlace CSS, me lleva a HTTP ... Pero si hago clic en un enlace, mientras estoy en la página HTTPS carga otra página como HTTPS. Estoy un poco confundido. – santa

1

Tuve el mismo problema. Si la página se abre en https, css/js también debe cargarse en https. Con esto quiero decir, para cargar css/js, debería usar el mismo protocolo que utilizó para abrir la página html/jsp/jsf, etc. Entonces la solución es no usar la URL absoluta para css/js. Utilizar la URL relativa en lugar de esta manera:

<link type="text/css" rel="stylesheet" href="../css/style.css" /> 

o utilizar esto:

<% String contextPath=request.getScheme()+"://"+request.getServerName()"+":"+request.getServerPort()+request.getContextPath(); 

<link type="text/css" rel="stylesheet" href="<%=contextPath>/css/style.css" />

Esto debería resolver problema de la carga de imágenes.

+0

Puede usar una barra diagonal doble para indicar absoluta pero con el mismo protocolo: como "//css/myfile.css". – nickdnk

2

Si está apuntando a su CSS con un enlace absoluto (como http://www.yourcompany.net/yourcompany.css) no mostrará el CSS en https. Si hace ese absoluto https://www.yourcompany.net/yourcompany.css, funcionará en ambas llamadas.

Cuestiones relacionadas