Domínio “.dev” falso adicionado ao arquivo hosts para fins de desenvolvimento redireciona para HTTPS no Chrome no Windows mesmo quando o servidor de desenvolvimento local não está ativo

Domínio “.dev” falso adicionado ao arquivo hosts para fins de desenvolvimento redireciona para HTTPS no Chrome no Windows mesmo quando o servidor de desenvolvimento local não está ativo

Estou construindo umExpresso.jsaplicativo localmente. Para testar isso em algo diferente de localhost, adicionei a seguinte entrada ao meu arquivo hosts:

127.0.0.1       mynewapp.dev

Sem nem iniciar o aplicativo, tentei acidentalmente http://mynewapp.dev:3000(é aqui que pretendia que o aplicativo fosse executado), no Chrome. Para minha surpresa, o Chrome me redirecionou para https://mynewapp.dev:3000.

Os cabeçalhos no console do navegador mostram:

Em geral:

  • URL de solicitação:http://mynewapp.dev:3000/
  • Método de solicitação: GET
  • Código de status: 307 Redirecionamento interno
  • Política de referência: sem referência quando fizer downgrade

Cabeçalhos de resposta:

  • Localização:https://mynewapp.dev:3000/
  • Razão Não Autoritativa: HSTS

Cabeçalhos de solicitação:

  • Cabeçalhos provisórios são mostrados
  • Solicitações inseguras de atualização: 1
  • Agente do usuário: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, como
  • Geco) Chrome/68.0.3440.106 Safari/537.36
  • X-DevTools-Emulate-Network-Conditions-Client-Id: 23A0CBD658A51DF4CA3B25A263078DA4

Como isso aconteceu?Não tenho nenhum software redirecionando a solicitação e meu aplicativo nem está em execução!

Estou usando:

  • Chrome versão 68.0.3440.106 (versão oficial) (64 bits)
  • Windows 10 Empresarial

No entanto, isso não acontece em:

  • Microsoft Edge 40.15063.674.0 (mostra código de erro: INET_E_RESOURCE_NOT_FOUND)
  • IE 11 (mostra código de erro: INET_E_RESOURCE_NOT_FOUND)

Para responder aos comentários:

  • curl -I http://mynewapp.dev:3000fica preso e não mostra nada.
  • Eu também tentei chrome://net-internals/#eventse encontrei o pedido. Isto é o que eu vi:

    100382: URL_REQUEST
    http://mynewapp.dev:3000/
    Start Time: 2018-08-17 07:32:03.853
    
    t=16751 [st=   0] +REQUEST_ALIVE  [dt=1007]
                       --> priority = "HIGHEST"
                       --> url = "http://mynewapp.dev:3000/"
    t=16751 [st=   0]   +URL_REQUEST_DELEGATE  [dt=1]
    t=16751 [st=   0]      DELEGATE_INFO  [dt=1]
                           --> delegate_blocked_by = "extension AdBlock"
    t=16752 [st=   1]   -URL_REQUEST_DELEGATE
    t=16752 [st=   1]   +URL_REQUEST_START_JOB  [dt=6]
                         --> load_flags = 18432 (MAIN_FRAME_DEPRECATED | MAYBE_USER_GESTURE)
                         --> method = "GET"
                         --> url = "http://mynewapp.dev:3000/"
    t=16752 [st=   1]      URL_REQUEST_REDIRECT_JOB
                           --> reason = "HSTS"
    t=16752 [st=   1]      URL_REQUEST_FAKE_RESPONSE_HEADERS_CREATED
                           --> HTTP/1.1 307 Internal Redirect
                               Location: https://mynewapp.dev:3000/
                               Non-Authoritative-Reason: HSTS
    t=16752 [st=   1]     +URL_REQUEST_DELEGATE  [dt=6]
    t=16752 [st=   1]        DELEGATE_INFO  [dt=6]
                             --> delegate_blocked_by = "MojoAsyncResourceHandler"
    t=16758 [st=   7]     -URL_REQUEST_DELEGATE
    t=16758 [st=   7]      URL_REQUEST_REDIRECTED
                           --> location = "https://mynewapp.dev:3000/"
    t=16758 [st=   7]   -URL_REQUEST_START_JOB
    t=16758 [st=   7]   +URL_REQUEST_DELEGATE  [dt=0]
    t=16758 [st=   7]      DELEGATE_INFO  [dt=0]
                           --> delegate_blocked_by = "extension AdBlock"
    t=16758 [st=   7]   -URL_REQUEST_DELEGATE
    t=16758 [st=   7]   +URL_REQUEST_START_JOB  [dt=1000]
                         --> load_flags = 18432 (MAIN_FRAME_DEPRECATED | MAYBE_USER_GESTURE)
                         --> method = "GET"
                         --> url = "https://mynewapp.dev:3000/"
    t=16759 [st=   8]      URL_REQUEST_DELEGATE  [dt=0]
    t=16759 [st=   8]      HTTP_CACHE_GET_BACKEND  [dt=0]
    t=16759 [st=   8]      HTTP_CACHE_OPEN_ENTRY  [dt=0]
                           --> net_error = -2 (ERR_FAILED)
    t=16759 [st=   8]      HTTP_CACHE_CREATE_ENTRY  [dt=0]
    t=16759 [st=   8]      HTTP_CACHE_ADD_TO_ENTRY  [dt=0]
    t=16759 [st=   8]     +HTTP_STREAM_REQUEST  [dt=999]
    t=16759 [st=   8]        HTTP_STREAM_JOB_CONTROLLER_BOUND
                             --> source_dependency = 100392 (HTTP_STREAM_JOB_CONTROLLER)
    t=17758 [st=1007]        HTTP_STREAM_REQUEST_BOUND_TO_JOB
                             --> source_dependency = 100393 (HTTP_STREAM_JOB)
    t=17758 [st=1007]     -HTTP_STREAM_REQUEST
    t=17758 [st=1007]   -URL_REQUEST_START_JOB
                         --> net_error = -102 (ERR_CONNECTION_REFUSED)
    t=17758 [st=1007]    URL_REQUEST_DELEGATE  [dt=0]
    t=17758 [st=1007] -REQUEST_ALIVE
                       --> net_error = -102 (ERR_CONNECTION_REFUSED)
    
  • Limpei o cache do host do chrome://net-internals/#dns. Não funcionou.
  • Parou todas as extensões do Chrome. Nenhuma mudança de comportamento.

Responder1

A partir de 2018, o Chrome e o Firefox agora forçam o HSTS para o .devdomínio de nível superior.

Comoexplicado nesta postagem do blog, embora os desenvolvedores de desktop usem o redirecionamento local (via hosts) .devdesde quase sempre, aparentemente existe agora (em maio de 2018).devum domínio genérico legítimo de primeiro nível (gTLD)propriedade do Google. E aqui estáeste commit do Chromium de 4 de janeiro de 2018 que afirma explicitamente:

Preload HSTS for the .dev gTLD.

Que divertido! Adicionalmente,a partir de julho de 2018, o Firefox também faz isso.

A solução mais simples e prática - para quem não deseja configurar HTTPS para desenvolvimento local - é usar outro sufixo como .localhostou mesmo .localou honestamente qualquer coisa no mundo como *.foobare tal.

Mas o resumo disso é que em 2018, o uso *.devdo sufixo para o desenvolvimento local só causará mais dores de cabeça e confusão inadvertidas do que qualquer outra coisa.

informação relacionada