A linha de assunto praticamente diz tudo. Quando você insere um URL de site sem um prefixo HTTP/HTTPS na barra de URL, pensei que o Chrome sempre preferiria HTTPS ou usaria o histórico/marcadores como um guia para decidir qual usar.
No entanto, tenho um site (e um site mais antigo que usa mediawiki) com versões HTTP e HTTPS, e o Chrome sempre escolhe HTTP para ele, apesar de eu excluir todas as entradas e favoritos do histórico HTTP e ter muitas entradas/marcadores de histórico para URLs HTTPS naquele site.
Portanto, claramente há algo nesse site que faz o Chrome escolher o HTTP: alguém pode explicar como o Chrome toma essa decisão?
O padrão sempre foi HTTP no passado – e o padrão ainda é HTTP hoje, a menos que o navegador se lembre de que o domínio tem uma política HSTS que impõe HTTPS para todas as solicitações (mesmo se você inserir http:// manualmente).
(O Chrome contém uma lista de domínios HSTS "pré-carregados", que sempre usam HTTPS sem exceções. Outros domínios podem aceitar dinamicamente enviando um cabeçalho Strict-Transport-Security especial - na primeira vez que você visita esse site via HTTPS, o navegador bloqueia no modo HSTS.)
Além disso, muitos sites oferecem uma versão HTTP que sempre redireciona os visitantes para HTTPS usando um 301 'Movido Permanentemente' ou outro código de redirecionamento semelhante. Mesmo se não houver HSTS configurado, os redirecionamentos "permanentes" seriam armazenados no cache do navegador e isso também pode fazer com que as solicitações vão diretamente para o 'novo' URL (embora isso seja por página, não por domínio).
Ambos os métodos resultam na barra de URL eventualmente contendo um endereço "https://", embora nos bastidores eles funcionem de maneira diferente - a política HSTS é aplicada localmente (nenhuma solicitação de texto simples acontece), enquanto os redirecionamentos são aplicados pelo servidor (e vulneráveis a serem falsificado). A maioria dos sites combina os dois métodos.
As configurações do Apache ou Nginx informam ao navegador se devem usar http ou https.
Editar: especificamente, os hosts virtuais Apache e Nginx determinam se um domínio terá um SSL ou não. Se você abrir um navegador e visualizar a guia de rede no Chrome ao carregar um site via http pela primeira vez, verá que a primeira solicitação geralmente é um redirecionamento 301 se o domínio tiver um SSL.
O navegador usa o nome de domínio para se conectar ao servidor por meio de servidores DNS distribuídos. Depois que a solicitação chega ao servidor host, as diretivas dos arquivos de configuração Apache ou Nginx são carregadas. O domínio é então comparado aos hosts virtuais na configuração e, se o domínio corresponder a um, as diretivas informam ao navegador qual porta usar. A porta 443 é https e 80 é http, geralmente.
Veja como são os VirtualHosts (Apache) e como são configurados no servidor host:
https://serverfault.com/questions/744960/configuring-ssl-with-virtual-hosts-under-apache-and-centos
(Ignore a pergunta e veja a resposta aceita)
Editar 2: Outra coisa que esqueci. Ter hosts virtuais https e http não força redirecionamentos automaticamente. Os sites podem carregar por meio de ambos. Os redirecionamentos geralmente são configurados por meio
.htaccess
de regras no apache ou diretivas no nginx que forçam os redirecionamentos, dependendo das preferências dos administradores. Portanto, meu comentário abaixo está um pouco errado.