O Chrome adiciona um cabeçalho estranho HTTPS: 1 a todas as solicitações

19

Estou recebendo muitos erros estranhos em sites relacionados ao HTTPS. Esses sites funcionam muito bem no FF e no IE, mas não são carregados no Chrome. Parece que, embora eu esteja solicitando um URL não seguro (http), o Google Chrome adiciona um cabeçalho extra HTTPS:1à solicitação.

Isso faz com que alguns servidores, provavelmente alguns que usam SSL offload e forneçam uma hospedagem compartilhada, respondam com um erro, pois não há SSL no servidor.

Não estou sendo redirecionado para uma página segura (HTTPS), mas todos os URLs internos na fonte estão sendo editados para https.

Eu verifiquei a conexão com o violinista. Esta análise não está sendo feita no meu computador e a única diferença é esse HTTPS:1cabeçalho.

Eu criei uma página PHP simples que imprime a $_SERVERvariável. Quando eu acessá-lo com cromo eu posso ver: [HTTP_HTTPS] => 1. Não consigo vê-lo no FireFox.

Tentei limpar todos os dados, desemparelhar o chrome da minha conta do Google e remover e instalar o Chrome do zero.

Alguém tem alguma idéia sobre isso? Isso está me deixando louco.

TwoDiv
fonte
Eu tive o mesmo problema no chrome canary, mas apenas em um site específico onde eu brincava com redirecionamentos http-> https. Eu acho que tem algo a ver com o cache de redirecionamento 301. O Chrome não me redirecionou para https após a limpeza completa do cache do navegador. No entanto, ele não resolve o problema do cabeçalho https. Eu o "resolvi", não usando mais o canary para o site específico. Hoje, o mesmo problema começou novamente no Chrome estável, mas NÃO no canário. Eu acho que o cache no canário expirou. Eu não testei por algum tempo. Parece totalmente aleatório para mim. Desculpe por não dar uma resposta. Mas, desde que eu
Azeruel
Sim, também estou vendo isso, começando ontem. Me deixando louco também.
22915 Kirby
O Chrome é muito, muito agressivo quando se trata de segurança. O Google provavelmente está fazendo isso por razões comerciais: se não conseguir proteger os dados dos usuários contra atores do governo, os usuários perderão a fé no Google muito rapidamente. Portanto, o Google considera estabelecer-se como líder em privacidade na Internet como uma das principais prioridades, apesar de seu modelo de negócios baseado em anúncios depender totalmente do rastreamento comportamental do usuário. Os usuários confiam no Google como um administrador seguro de seus dados pessoais, para não vazar dados para terceiros não autorizados, para que não possam se dar ao luxo de fazer menos.
bwDraco

Respostas:

15

Provavelmente, os sites com os quais você está tendo problemas estão executando o código do servidor que interpreta incorretamente o HTTPS: 1cabeçalho da solicitação. Por exemplo, o plugin Wordpress WooCommerce, que está sendo executado em cerca de 900.000 sites , possui código de buggy que manipula incorretamente o HTTPS: 1cabeçalho. Consulte o último documento de correção aqui: https://woocommerce.wordpress.com/2015/07/07/woocommerce-2-3-13-security-and-maintenance-release/

Há uma postagem semelhante no StackOverflow: /programming/31565155/wordpress-woocommerce-forces-https-when-it-shouldnt/31570584#31570584

Para fornecer mais detalhes: O Chrome implementou a especificação Solicitações de atualização insegura do World Wide Web Consortium (W3C). A seção 3.2.1 dessa especificação é o campo Cabeçalho de solicitação HTTP de atualização insegura e solicitações, que declara

3.2.1 O campo Upgrade-Insecure-Requests HTTP Request Header

O campo de cabeçalho de solicitação HTTP Upgrade-Insecure-Requests envia um sinal ao servidor, expressando a preferência do cliente por uma resposta criptografada e autenticada e que ele pode lidar com êxito com a diretiva upgrade-insecure-orders, a fim de tornar essa preferência o mais perfeita possível fornecer.

Essa preferência é representada pela seguinte ANBF:

"Solicitações de atualização insegura:" * WSP "1" * WSP

Sites como os que executam o plug-in WooCommerce no Wordpress estão reescrevendo incorretamente todos os URLs na resposta como https:\\links se o HTTPS: 1cabeçalho tiver sido definido em uma solicitação não segura (http).

Como usuário final desse site, a única solução fácil é usar um navegador que não seja o Chrome até que esses sites sejam reparados

Kirby
fonte
Obrigado pela resposta elaborada, vi que esse código foi implementado, mas como esse problema é específico do meu computador (verifiquei com computadores diferentes no escritório), presumo que exista uma maneira de desativá-lo. Outros computadores não enviam o cabeçalho HTTPS: 1, ele é específico para o meu computador.
TwoDiv 22/07/2015
1
Não é específico para o seu computador. Eu estou supondo que os outros usuários não tenham atualizado para a versão mais recente do Chrome, ainda
Kirby
Uau, isso será um grande problema para o WooCommerce. Eu corro dois sites separados (não habilitados para https) no Woo e acabei de corrigi-los com a correção que eles lançaram, no entanto, posso imaginar muitos lojistas reclamando sobre esse!
lisburnite
Eu acho que não é apenas uma questão de WooCommerce, mas a maneira como o servidor lê os cabeçalhos. No meu trabalho, usamos SSL Offload e usamos o parâmetro HTTP-Proto para informar ao servidor se a solicitação chegou em HTTPS. O servidor obtém uma solicitação HTTP simples e a analisa como se fosse HTTPS. Presumo que este é o mesmo problema e se a configuração do servidor não permite HTTPS, não tem SSL, ou utilizar pastas diferentes para HTTP e HTTPS - eles vão falhar
TwoDiv
3
@lisburnite você está operando sites de comércio que não são veiculados via HTTPS? Você provavelmente deve dar aos seus clientes alguma proteção e correção que ...
Ashley
3

é mais do que apenas wocommerce, é todo o wordpress que está dando errado, causando css, imagens e etc.

adicione-o próximo ao topo do seu wp-config.php para removê-lo

if($_SERVER['HTTP_HTTPS'] && !$_SERVER['HTTPS'])
{    unset($_SERVER['HTTP_HTTPS']);
}
Qualquer
fonte
@ qualquer painel de administração não funcionará.
Dhruv Kapatel
usá-lo em muitos sites que quebraram ontem, sem problemas
qualquer
1

Você pode tentar isso para desabilitar o HTTP_HTTPScabeçalho.

if(!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != 'on') {
    unset($_SERVER['HTTP_HTTPS']);
}
Aley
fonte