Estoy agregando un archivo CSS externo y un archivo JS externo a mis encabezados y pies de página. Al cargar una página HTTPS, algunos navegadores se quejan de que estoy cargando contenido no seguro.
¿Existe una manera fácil de hacer que el navegador cargue el contenido externo a través de HTTPS cuando la página en sí es HTTPS?
javascript
html
css
https
Nathan H
fuente
fuente
https://
recursos cuando estén disponibles. Se cargarán bien en su página, independientemente del esquemanute y James Westgate tienen razón al comentar la respuesta posterior.
Si echamos un vistazo a varias inclusiones de javascript externas de grado industrial, las exitosas usan tanto el rastreo de document.location.protocol como la inyección de elementos de script para usar el protocolo adecuado.
Entonces podrías usar algo como:
<script type="text/javascript"> var protocol = ( ("https:" == document.location.protocol) ? "https" : "http" ); document.write( unescape( "%3Cscript" + " src='" + protocol + "://" + "your.domain.tld" + "/your/script.js" + "'" + " type='text/javascript' + "%3E" + "%3C/script%3E" ) // this HAS to be escaped, otherwise it would // close the actual (not injected) <script> element ); </script>
Lo mismo se puede hacer para las inclusiones CSS externas.
Y, por cierto: tenga cuidado de usar solo la ruta URL () relativa en su CSS, si corresponde, de lo contrario, es posible que reciba la advertencia "mixta segura y no segura" ...
fuente
Si usa rutas relativas (y el contenido está en el mismo dominio), entonces el contenido debe usar el protocolo en el que se solicitó la página.
Sin embargo, si va a través del dominio a una CDN o un sitio de recursos, o si necesita usar rutas absolutas, deberá usar el script del lado del servidor para cambiar los enlaces, o usar siempre https: //
fuente
En contradicción con la respuesta de escape (que también funcionará), puede omitir esa parte y usar la forma correcta de agregar nodos a su árbol de dom:
<script type="text/javascript" language="javascript"> var fileref=document.createElement('script'); fileref.setAttribute("type","text/javascript"); fileref.setAttribute("src", document.location.protocol + '//www.mydomain.com/script.js'); document.getElementsByTagName("head")[0].appendChild(fileref); </script>
Pero la ruta relativa al protocolo sería el camino a seguir.
fuente