Após algumas considerações, ficou claro que não há uma maneira universal aplicável para determinar o final de uma mensagem malformada, já que as mensagens sempre contêm alguns bits de informação autoexplicativos (por exemplo, o campo de cabeçalho Content-Length
) que permite ao destinatário para realmente entender a mensagem.
Se, por exemplo, uma resposta ficaria assim:
HTTP/1.1 200 OK
Content-Length: [ consider correct content length here ]
Content-Type: text/html
<html>
<head>
<title>Title</title>
</head>
<body>
HTTP OK status messages look like this:
HTTP/1.1 200 OK
</body>
</html>
O analisador do cliente provavelmente falharia no primeiro <
, já que esperaria outro nome de campo de cabeçalho (devido à quebra única de linha após Content-Type
-header) que não permite <
. Além disso, ele deve (provavelmente) não "pesquisar" por outra resposta HTTP válida nos dados a seguir, pois ela pode receber corpos de mensagem como o fornecido, onde diz HTTP/1.1 200 OK
, que não deve ser uma nova resposta. .
Assim, a melhor reação a uma mensagem http malformada parece estar fechando a conexão, já que qualquer outra tentativa de interpretar os dados a seguir recebidos é inevitavelmente ambígua.
No entanto, este não é o AFAIK especificado em RFC. Talvez porque o RFC seja mais sobre a definição de padrões e menos sobre como lidar com comportamentos não padronizados.