maliciosos - Detecta HTTPS con JavaScript
analisis de sitios maliciosos (6)
Puedes usar el no estándar
window.location.protocol
En Firefox: documentación de MDC
En IE, parece ser
document.location.protocol
No puedo encontrar información confiable sobre cómo se comporta esto en otros navegadores, pero espero que cumplan con el cuasi estándar de document.location.protocol
.
Tal vez el plugin jQuery url solucione esto sin tener que lidiar con las diferencias entre navegadores. Nunca lo he usado, pero parece prometedor:
jQuery.url.attr("protocol");
Esta pregunta ya tiene una respuesta aquí:
Estoy tratando de encontrar cómo puedo detectar con JavaScript si estoy en un entorno HTTP o HTTPS.
Llamo a una solicitud de Ajax, así que si estoy en HTTPS y llamo a HTTP Ajax, recibo un 302 Movido temporalmente.
Estaba pensando en obtener la window.location.href
actual y hacer una manipulación de cadenas.
¿Cuál es la mejor forma de detectar HTTPS usando JavaScript?
Mirando cómo Google Analytics agrega su script a la página:
ga.src = (''https:'' == document.location.protocol ? ''https://ssl'' : ''http://www'') + ''.google-analytics.com/ga.js'';
Entonces document.location.protocol parecería seguro para todos los navegadores.
location.protocol
funciona en todos los navegadores.
Hay una lib verdaderamente ordenada llamada URI para cosas como esta. https://github.com/medialize/URI.js
Probablemente no necesite esto solo para obtener el protocolo, pero si va a manipular URIs de cadenas, debe usar esto.
En muchos casos, uno puede omitir el protocolo por completo. Entonces, en lugar de
<img src="https://test.com/image.jpg" />
uno podría usar
<img src="//test.com/image.jpg" />
El navegador luego agrega el protocolo actual automáticamente. Esto también funciona para incluir archivos en la cabeza, y también debería funcionar para llamadas ajax.
Editar: Hacer esto ahora se considera un antipatrón:
Ahora que se alienta SSL para todos y no tiene problemas de rendimiento, esta técnica ahora es un antipatrón. Si el activo que necesita está disponible en SSL, utilice siempre el recurso https: //.
Permitir que el fragmento solicite a través de HTTP abre la puerta a ataques como el reciente ataque Github Man-on-the-side. Siempre es seguro solicitar activos HTTPS incluso si su sitio está en HTTP, sin embargo, lo contrario no es cierto.
ver: http://www.paulirish.com/2010/the-protocol-relative-url/
Qué tal esto ?
var protocol = window.location.href.indexOf("https://")==0?"https":"http";