Analizar as cabeceiras HTTP Connection como tokens separados por comas
Analiza cada opción de Connection sen distinguir maiúsculas e minúsculas cando un proxy directo atopa keep-alive e Upgrade no mesmo campo HTTP/1.1.
Estes valores non son grafías en competencia dun único modo:
Connection: Upgrade
Connection: keep-alive, UpgradeO 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.