Cabeçalho de atualização HTTP / 1.1 - HTTP/1.1 Upgrade header
HTTP |
---|
Métodos de solicitação |
Campos de cabeçalho |
Códigos de status |
Métodos de controle de segurança de acesso |
Vulnerabilidades de segurança |
O campo de cabeçalho de atualização é um campo de cabeçalho HTTP introduzido em HTTP / 1.1 . Na troca, o cliente começa fazendo uma solicitação de texto não criptografado , que posteriormente é atualizada para uma versão mais recente do protocolo HTTP ou alternada para um protocolo diferente. Um upgrade de conexão deve ser solicitado pelo cliente; se o servidor deseja forçar uma atualização, ele pode enviar uma 426 Upgrade Required
resposta. O cliente pode então enviar uma nova solicitação com os cabeçalhos de atualização apropriados enquanto mantém a conexão aberta.
Use com TLS
Um uso é iniciar uma solicitação na porta HTTP normal, mas mudar para Transport Layer Security (TLS). Na prática, esse uso é raro, sendo o HTTPS uma forma muito mais comum de iniciar o HTTP criptografado.
O servidor retorna um 426
código de status para alertar os clientes legados de que a falha estava relacionada ao cliente (os 400
códigos de nível indicam uma falha do cliente).
Este método para estabelecer uma conexão segura é vantajoso porque:
- Não requer redirecionamento de URL confuso e problemático no lado do servidor;
- Ativa a hospedagem virtual de sites protegidos (embora HTTPS também permita isso usando a indicação de nome de servidor ); e
- Reduz o potencial de confusão do usuário, fornecendo uma única maneira de acessar um recurso específico.
Se os mesmos recursos estiverem disponíveis no servidor por meio de meios seguros criptografados e meios claros não criptografados, um intermediário pode manter uma conexão não criptografada e não autenticada com o cliente enquanto mantém uma conexão criptografada com o servidor.
As desvantagens deste método incluem:
- O cliente não pode especificar o requisito de um HTTP seguro no URI (embora o cliente possa exigir isso por meio da negociação de atualização); e
- Como o HTTP é definido em uma base de salto , o túnel HTTP pode ser necessário para contornar os servidores proxy.
Use com WebSocket
O WebSocket também usa esse mecanismo para configurar uma conexão com um servidor HTTP de forma compatível. O protocolo WebSocket tem duas partes: um handshake para estabelecer a conexão atualizada e, em seguida, a transferência de dados real. Primeiro, um cliente solicita uma conexão WebSocket usando os cabeçalhos Upgrade: WebSocket
e Connection: Upgrade
, junto com alguns cabeçalhos específicos de protocolo para estabelecer a versão que está sendo usada e configurar um handshake. O servidor, se suportar o protocolo, responde com o mesmo Upgrade: WebSocket
e Connection: Upgrade
cabeçalhos e completa o handshake. Assim que o handshake for concluído com sucesso, a transferência de dados começa.
Use com HTTP / 2
O mecanismo de atualização HTTP é usado para estabelecer HTTP / 2 a partir de HTTP simples. O cliente inicia uma conexão HTTP / 1.1 e envia um Upgrade: h2c
cabeçalho. Se o servidor suportar HTTP / 2, ele responderá com o código de status do protocolo de comutação HTTP 101 . O mecanismo de atualização HTTP é usado apenas para HTTP2 (h2c) de texto não criptografado. No caso de HTTP2 sobre TLS (h2), a extensão do protocolo ALPN TLS é usada.