Google Chrome redirige localhost a https

362

Cuando depuro un proyecto de Visual Studio con Chrome, el navegador intenta redirigir al equivalente https de mi dirección web. No tengo SSL habilitado en el proyecto web y la URL de inicio es la URL http. Cuando depuro usando FireFox o IE no tengo este problema.

Reinstalé Chrome que solucionó el problema por un día. Sin descargar ningún complemento, el problema volvió a ocurrir al día siguiente.

¿Qué está haciendo que Chrome redirija localhost a https?

Network Inspect Shows: URL de solicitud: datos: texto / html, chromewebdata Encabezados de solicitud Se muestran encabezados provisionales Usuario-Agente: Mozilla / 5.0 (Windows NT 6.3; WOW64) AppleWebKit / 537.36 (KHTML, como Gecko) Chrome / 36.0.1985.143 Safari / 537,36

Sin vista previa y sin datos de respuesta en esas pestañas.

Brett Mathe
fuente
¿Qué muestra Network Inspector?
c69
44
La inspección de red no muestra mucho en absoluto. Ni siquiera puedo ver la URL que se solicita. URL de solicitud: datos: texto / html, chromewebdata Encabezados de solicitud Se muestran encabezados provisionales Control de caché: sin caché Pragma: sin caché Agente de usuario: Mozilla / 5.0 (Windows NT 6.3; WOW64) AppleWebKit / 537.36 (KHTML, como Gecko ) Chrome / 36.0.1985.143 Safari / 537.36
Brett Mathe
CHROME 63: seguir desplazándose en busca de respuestas
norteamericanas
Simplemente reinstalando mi Chrome soluciona todos los problemas ... ahora mi .dev y ya no redirige a https. Ojalá lo hubiera intentado antes ... perdí tanto tiempo ...
Taj Khan
10
Cualquier persona con este problema recientemente, si está tratando de usarlo .devcomo su doman local, es un problema completamente nuevo, así que no creo que ninguna de estas respuestas funcione más. A partir de Chrome 63 ... "Chrome para forzar dominios .dev a HTTPS a través de HSTS precargado". Así que no más certificados SSL autofirmados. Aparentemente .dev es un dominio real. Quien sabe.
Trevor

Respuestas:

592

Creo que esto es causado por HSTS - ver http://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security

Si ha (desarrollado) otros sitios de host local que envían un encabezado HSTS ...

p.ej. Seguridad de transporte estricta: edad máxima = 31536000; includeSubDomains; precargar

... luego, dependiendo del valor de max-age, se requerirán solicitudes futuras para localhost a través de HTTPS.

Para evitar esto, hice lo siguiente.

  • En la barra de direcciones de Chrome, escriba "chrome: // net-internals / # hsts"
  • En la parte inferior de una página está el cuadro de texto QUERY domain: verifique que localhost sea conocido por el navegador. Si dice "No encontrado", entonces esta no es la respuesta que está buscando.
  • Si es así, BORRE el dominio localhost usando el cuadro de texto de arriba
  • Su sitio ahora debería funcionar con HTTP antiguo simple

Esta no es una solución permanente, pero al menos hará que funcione entre proyectos. Si alguien sabe cómo excluir localhost permanentemente de la lista HSTS, hágamelo saber :)

ACTUALIZACIÓN - Noviembre 2017

Chrome ha movido recientemente esta configuración para ubicarla en Eliminar políticas de seguridad de dominio

ingrese la descripción de la imagen aquí

ACTUALIZACIÓN: diciembre de 2017 Si está utilizando el dominio .dev, vea otras respuestas a continuación, ya que Chrome (y otros) fuerzan HTTPS a través de HSTS precargado.

Salto Grande
fuente
66
Muy frustrante. Pero me alegro de haber encontrado la causa.
Zapnologica
21
Traté de buscar "localhost" pero dice No encontrado
Chin
2
Sé que esta es una publicación antigua, pero ¿alguna idea de cómo resolver si, al consultar localhost según la respuesta aceptada, devuelve 'no encontrado'? Intenté todo en todos los comentarios y respuestas aquí.
DarkW1nter
28
Esto es basura total de Chrome. ¿Cómo esperan que desarrollemos localmente cuando comienzan a forzarlo arbitrariamente a HTTPS en su maldito localhost? He usado todo bien durante meses, me conecto una mañana y tengo que lidiar con esta basura. Ninguna de estas "soluciones" me funciona.
Alison
50
Si su dominio localhost es .dev entonces, creo que esto no funciona @Alison debido a la reciente versión de v.63 ... "Chrome para forzar dominios .dev a HTTPS a través de HSTS precargado". Como tal, .dev básicamente ya no funcionará a menos que tenga un certificado SSL firmado correctamente. No se permiten más certificados autofirmados. Más detalles .
Trevor
308

Experimenté el mismo problema en Chrome e intenté sin éxito utilizar la solución de BigJump .

Solucioné mi problema forzando una actualización completa, como se muestra en este blog (originalmente de esta respuesta SuperUser ).

Asegúrese de que su barra de direcciones esté usando el esquema http y luego siga estos pasos, posiblemente un par de veces:

  1. Abra el panel Herramientas para desarrolladores (CTRL + MAYÚS + I)
  2. Haga clic y mantenga presionado el icono de recarga / Haga clic derecho en el icono de recarga.
  3. Se abrirá un menú.
  4. Elija la tercera opción de este menú ("Vaciar caché y recarga dura")
Adiyat Mubarak
fuente
3
También puede hacer clic con el botón derecho en el ícono actualizar / volver a cargar para acceder al menú Hard Reload
avjaarsveld
3
No puedo hacer que esta solución funcione. El problema es que hace una recarga dura en localhost: 3000 (en mi caso). Intentando cambiar el protocolo antes de la recarga pero eso no funciona.
john_omalley
1
¡¡¡Gracias!!! Esto restaura localhost: puerto original si ha estropeado su startup.cs con esto ... var options = new RewriteOptions (). AddRedirectToHttpsPermanent (); app.UseRewriter (opciones); }
hubert17
Trabajó para mí presionando "CTRL + MAYÚS + R" para una recarga difícil.
LP. Gonçalves
En cromo, es F12 y no CTRL + MAYÚS + I
Champ
190

¡NUEVOS DESARROLLOS! (si tienes Chrome 63+)

Si su dominio localhost es, .deventonces no creo que las respuestas aceptadas previamente y que funcionen ya no se apliquen. Esto se debe a que a partir del Chrome 63 Chrome forzará los dominios .dev a HTTPS a través de HSTS precargado.

Lo que esto significa es que, .devbásicamente , ya no funcionará a menos que tenga un certificado SSL firmado correctamente, ¡no se permiten más certificados autofirmados! Obtenga más información en esta publicación de blog.

Por lo tanto, solucionar este problema ahora y evitar que vuelva a suceder en el futuro .testes un dominio recomendado porque IETF lo reserva para fines de prueba / desarrollo. También deberías poder usar .localhostpara desarrolladores locales.

Trevor
fuente
2
Cambié todos los dominios .dev a .app, todavía el mismo problema. ¿Alguna sugerencia sobre cuál podría ser el problema?
Jeff
55
@Jeff intenta usar.test
Vitalii Zurian
18
Esto es EXTREMADAMENTE molesto. Seguramente debe haber alguna forma de no obligarnos a cambiar nuestro dominio de desarrollo, ¿verdad?
Emanuele Ciriachi
55
reemplazar .devpor .testfuncionó para mí también en Chrome 63
Lekhnath
12
Estos valores predeterminados contraintuitivos son terribles. ¿Por qué debería uno perder el tiempo depurando la configuración de su entorno de desarrollo, o simplemente adivinando qué está mal, solo para descubrir que todo está bien de su lado y es Google Chrome el que redirige .dev a HTTPS de forma predeterminada? ¿Dónde está la lógica? ¿Por qué .dev y por qué no otros TLD? Absolutamente no intuitivo.
Meglio
50

A cuestas de Adiyat Mubarak

No se pudo actualizar, ya que solo se estaba actualizando en https. Sigue algunos de los mismos pasos.

1. Open chrome developer tools (ctrl + shift + i)
2. Network Tab at the top
3. Click Disable cache checkbox at the top (right under network tab for me).
4. Refresh page (while the developer tools is still open)
Steven Johnston
fuente
Estoy aquí por segunda vez para la solución. Muchas gracias.
Čamo
1
Estoy usando un dominio .local y esto funcionó cuando la solución HSTS anterior no lo hizo.
DiegoSalazar
Esto es lo único que funcionó para mí después de probar las soluciones de BigJump y Adiyat Mubarak.
Alek Arsovski el
Deshabilitar el caché fue necesario para mí también. Este problema comenzó a ocurrirme después de cerrar Fiddler.
CounterFlame
47

Estoy enfrentando el mismo problema, pero solo en Chrome Canary y buscando una solución, encontré esta publicación .

una de las próximas versiones de Chrome obligará a todos los dominios que terminan en .dev (y .foo) a ser redirigidos a HTTP a través de un encabezado de seguridad estricta de transporte HTTP (HSTS) precargado.

{ "name": "dev", "include_subdomains": true, "mode": "force-https" },
{ "name": "foo", "include_subdomains": true, "mode": "force-https" },

Entonces, cambia tus dominios.

rafawhs
fuente
2
Este es el problema que vine a resolver. hombre ahora tengo que llegar a una falsa TLD diferente para mis sitios locales dev ...
Matt Lohkamp
2
Desde wiki , .localsuena un poco frágil, aunque supongo que es más seguro que otros TLD. También estoy retrayendo el uso de .localhostcoz, parece que Chrome hace una redirección nativa que parece evitar que mi rproxy funcione. .testparece más seguro, aunque torpe debido a los conflictos de espacio de nombres con todas esas cadenas utilizadas en TDD / .test()métodos, etc.
habita el
8
Perdí un día en esto. Muchas gracias
Tonio
17
maldita sea, acabo de actualizar a Chrome 63 y ahora esto me está afectando para .dev. WTF No me importa si es un TLD válido o no, si no necesito o no quiero o si mi sitio usa SSL, no lo fuerce.
dbinott
66
Wow, esto me molesta. Para algunos entornos de desarrollo, no es tan simple como cambiar el tld. Estoy mirando horas de trabajo ahora para cambiar esto por lo que estoy trabajando. No es realmente asunto de ellos lo que quiero usar para desarrollar.
Brett Thomas
18

Chrome 63 (disponible desde diciembre de 2017) forzará a todos los dominios que terminan en .dev (y .foo) a ser redirigidos a HTTPS a través de un encabezado HTTP Strict Transport Security (HSTS) precargado. Puede encontrar más información sobre esto aquí.

Tai Ho
fuente
2
^^ Lo mismo. Afectó nuestros .appdominios en la última semana también. Estamos cambiando temporalmente .testaunque no creo que sea una solución a largo plazo.
russellmania
13

de https://galaxyinternet.us/google-chrome-redirects-localhost-to-https-fix/

Ninguno de los arreglos de opciones me funcionó, para solucionarlo https://localhost:3000, esto funcionó.

haga clic y mantenga presionado el Reloadbotón y seleccione Empty Cache and Hard Reload, esto parece ser solo una opción enlocalhost

usuario2167582
fuente
esto no funciona a mi fin. hay alguna otra solucion?
Raju Paladiya
Última actualización de Chrome, por lo que esta solución ya no funcionará.
user2167582
1
Esto debería funcionar en todos los dominios si tiene abierta la barra de herramientas del desarrollador
Hussam
7

También he estado luchando con este problema. Parece que HSTS está destinado solo a nombres de dominio . Entonces, si está desarrollando en una máquina local, es mucho más fácil usar la dirección IP. Entonces cambié de localhost a 127.0.0.1

siim
fuente
Eso está bien, pero ¿es posible asegurarse de que cada vez que escriba localhost, reemplace las palabras localhost con 127.0.0.1?
Simon
Muchas gracias
hedha
6

Nunca descubrí la raíz del problema, sin embargo pude solucionarlo. Eliminé la carpeta de caché de la aplicación Google Chrome que resolvió el problema.

C: \ Usuarios [usuarios] \ AppData \ Local \ Google \ Chrome

Brett Mathe
fuente
1
¿Perdiste todo el historial del navegador o las contraseñas?
Zapnologica
77
Creo que el problema es que Chrome almacena cuando visitas un dominio usando HTTPS y luego, si vuelves a visitar el mismo dominio, cambia automáticamente a HTTPS. Como desarrollador es un fastidio porque una vez que accedes a cualquier sitio localhost usando HTTPS, de repente todos los sitios locahost son redirigidos a HTTPS.
Dale K
1
@DaleBurrell No tienes razón. Esto es causado por HSTS: en.wikipedia.org/wiki/HTTP_Strict_Transport_Security
langpavel
6

Esto puede ser causado por una redirección https almacenada en caché, y puede solucionarse borrando el caché manualmente como en la respuesta de Adiyat Mubarak.

Pero si está visitando localhost, es probable que sea un desarrollador, en cuyo caso encontrará una extensión de Chrome para borrar la memoria caché, como "classic cache killer" (consulte, por ejemplo, https://chrome.google.com/webstore/search/classic%20cache % 20killer? Hl = es ) útil en una variedad de situaciones, y probablemente ya tenga una instalada.

Entonces, la solución rápida es: Instale un asesino de caché (si aún no tiene uno), enciéndalo y vuelva a cargar la página. ¡Hecho!

CalderBot
fuente
Esto solucionó el problema
makdu
6

Una solución perezosa y rápida para gente perezosa como yo (trabajando en Chrome 67).

Simplemente inicie otra ventana de Chrome en modo invisible , con la opción "Ventana de incógnito" (CTRL + MAYÚS + N). No es necesario eliminar el caché, no es necesario sumergirse en la configuración profunda de Chrome, etc.

Spekdrum
fuente
1
Tuve problemas con las otras sugerencias, posiblemente porque necesitaba tener varias páginas web diferentes abiertas al mismo tiempo, todas en el mismo dominio pero en diferentes servidores, algunos de estos servidores web usando https, otros http. ¡Casi nada más que la "Ventana de incógnito"!
Klaws
Esto funciona, pero hace que mis solicitudes AJAX sean extremadamente lentas debido a los encabezados provisionales.
Ramitas
5

Ninguno de estos funcionó para mí. Comenzó a suceder después de una actualización de Chrome (Versión 63.0.3239.84, Linux) con una URL local. Siempre redirigiría a https sin importar qué. Perdí algunas horas y mucha paciencia en esto

Lo que funcionó después de todo fue solo cambiar el dominio.

Por lo que vale, el dominio era .app. Tal vez tiene algo que hacer? Y solo lo cambié a .test y Chrome dejó de redirigirlo

diogo.abdalla
fuente
5

Cómo resolví este problema con Chrome 79:

Simplemente pegue esta url en su entrada de búsqueda chrome: // flags / # allow-insecure-localhost

Me ayudó al usar características experimentales.

Ivan Efremov
fuente
3

Desafortunadamente, ninguna de las soluciones enumeradas aquí me ayudó a resolver este problema. Solucioné este problema usando http://127.0.0.1 (dirección IP) en lugar de http: // localhost . Un pequeño truco rápido para trabajar con desarrollo angular con el navegador Chrome.

Venkatesh Muniyandi
fuente
1

En mi caso, tenía mi ruta de proyecto configurada como /Users/me/dev/project_root/y estaba ejecutando el servidor nodeJS/ expressdesde allí. Cambiar el nombre de mi ruta a /Users/me/project_root(eliminar devde la ruta al proyecto) resolvió el problema.

Lo más probable es que tenga que ver con esta nueva regulación:

Chrome 63 (disponible desde diciembre de 2017) forzará a todos los dominios que terminan en .dev (y .foo) a ser redirigidos a HTTPS a través de un encabezado de seguridad estricta de transporte HTTP (HSTS) precargado.

Puede encontrar más información sobre esto aquí .

Utilizando:

  • Google Chrome versión 70.0.3538.110 (compilación oficial) (64 bits)
  • nodeJS v9.2.0
Kobbi Gal
fuente
1

Una solución simple para esto es editar su /etc/hostsarchivo y establecer un alias por proyecto.

127.0.0.1   project1 project2 project3

Estos nombres sin dominio nunca tendrán el problema con HSTS a menos que envíe la respuesta de HSTS mencionada por @bigjump y con el beneficio adicional de mantener su sesión de inicio de sesión si cambia de un proyecto a otro.

codificador de barcos
fuente
0

Vaya a la configuración en Chrome y luego a Configuración avanzada, en la sección de privacidad y seguridad, haga clic en Borrar datos de navegación y luego borre todos los datos. Seguí estos pasos y funcionó para mí. Espero que ayude a alguien.

usuario9143776
fuente
0

Chrome 63 fuerza dominios .dev automáticos a HTTPS a través de HSTS precargado.
Solución rápida: simplemente cambie los dominios .dev a .localhost.

Wouter Schoofs
fuente
0

Esto no es una solución, es solo una solución.

  1. Haga clic en su proyecto de estudio visual (nivel superior) en el explorador de soluciones y vaya a la ventana de propiedades.

  2. Cambie SSL habilitado a verdadero. Ahora verá otro número de puerto como 'URL SSL' en la ventana de propiedades.

  3. Ahora, cuando ejecuta su aplicación (o la ve en el navegador), debe cambiar manualmente el número de puerto al número de puerto SSL en la barra de direcciones.

Ahora funciona bien como un enlace SSL

Arunabh Mukherjee
fuente
0

Abrir Chrome Developer Tools-> ir a Network-> seleccionar Disable Cache-> volver a cargar

Ben Bieler
fuente
-1

Para alguien que tenía el mismo problema, lo resolví presionando CTRL + MAYÚS + ELIMINAR para eliminar solo todo el caché del navegador. Ahora puedo acceder a mi sitio web localhost en el protocolo HTTP.

Renan Coelho
fuente
-2

La respuesta de @Adiyat Mubarak no funcionó para mí. Cuando intenté borrar el caché y volver a cargar, la página aún redirigió a https.

Mi solución: en la esquina superior derecha de la barra de direcciones (justo a la izquierda del ícono de la estrella de favoritos) hay un ícono con una "x". Haga clic derecho sobre eso, y dirá algo sobre "secuencias de comandos inseguras", entonces hay una opción para cargarlas de todos modos. Haz eso.

cph2117
fuente
¿Sabes cuál es el nombre de esta opción o dónde más encontrarlo? No veo el acceso directo en mi barra de URL.
Carolyn Conway
@CarolynConway No estoy seguro de cómo se llama. Es posible que solo aparezca para mi problema particular.
cph2117
-2

Otra opción sería usar algo como https://github.com/rchampourlier/tunnelss

Claro que agregó otra dependencia / configuración, pero también permite probar https en dev, lo que podría ser bueno.

Sin embargo, uso RVM para que los túneles funcionen. Tuve que usar sudo gem install tunnelssysudo tunnelss

Señor ISH
fuente
-4

Esa es la solución más rápida hoy (17-3-2018):

Cierre todas las pestañas / ventanas de Chrome y ejecute en su línea de comando esto: (o agréguelo como código abreviado)

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --ignore-certificate-errors
gtamborero
fuente