Estes valores non son grafías en competencia dun único modo:

Connection: Upgrade
Connection: keep-alive, Upgrade

O segundo enumera dúas opcións de conexión. HTTP define Connection como unha lista separada por comas, con nomes de opción que non distinguen maiúsculas e minúsculas. O código que compara todo o valor coa cadea exacta Upgrade perde unha lista válida que conteña esa opción.

Para o reenvío ordinario, un intermediario HTTP analiza o campo entrante, elimina os campos que nomean as súas opcións e despois elimina o propio Connection ou substitúeo polas opcións de control do intermediario para a conexión seguinte.

Eliminar só un campo Keep-Alive codificado de forma fixa non abonda. Unha mensaxe pode nomear outro campo específico da conexión na lista, e ese campo non debe filtrarse ao reenvío ordinario.

Admitir unha actualización de protocolo esixe tratar de xeito deliberado as dúas conexións e o novo protocolo. Copiar ás cegas as cabeceiras Upgrade entrantes non é unha implementación desa entrega.

Cando un navegador funciona e outro falla, compara os valores reais dos campos a ambos os lados do intermediario. Unha diferenza entre un único token e unha lista de dous tokens pode revelar un erro do analizador sen esixir que o navegador imite o formato exacto doutro navegador.

Isto afecta as mensaxes HTTP que analiza o proxy. Un túnel HTTPS CONNECT ordinario non expón ao proxy o campo Connection do sitio web cifrado.

Artigos relacionados