Je ne peux pas sembler obtenir une réponse définitive sur la question suivante (googler la plupart du temps et la lecture HTTP/1.1 spécifications):(Chunked) HTTP corps de message binaire et CRLFs
lors de l'encodage de transfert « morcelées » est utilisé, pourquoi le serveur doit écrire la taille de bloc en octets et avoir les données de bloc suivantes avec CRLF. Cela ne rend-il pas l'envoi de données binaires "CRLF-unclean" et la méthode un peu redondante? Que se passe-t-il si les données ont un 0x0A suivi de 0x0D quelque part (c'est-à-dire qu'elles font en fait partie des données)? Le client est-il censé respecter la taille de segment explicitement indiquée en tête du tronçon ou de l'étranglement sur le premier CRLF qu'il rencontre dans les données? Ma compréhension jusqu'à présent est de simplement prendre la taille de bloc fournie par le serveur, passer à la ligne suivante, puis lire exactement cette quantité d'octets dans les données suivantes (CRLF ou pas CRLF à l'intérieur), puis ignorer ce CRLF qui suit les données et répétez la procédure jusqu'à ce qu'il n'y ait plus de morceaux ... Ai-je raison? Quel est le point de la CRLF après chaque datachunk alors? Lisibilité?
Merci pour l'explication. Le prenez-vous dans le document RFC 2616 ou ailleurs? Est-ce que votre explication implique également que le bloc de réponse PEUT NE PAS contenir de combinaison CRLF dans le cadre des données elles-mêmes? – amn
Il résulte de l'EBNF dans le RFC; Notez que 'chunk-data' est constitué de' OCTET', ce qui suggère que ces octets ne doivent pas être interprétés. Un bloc de réponse peut certainement contenir CRLF. J'ai implémenté deux fois un codec en bloc, les deux fois en Java, et dans chaque cas je n'ai fait aucune interprétation du contenu des données de bloc. C'est opaque au cadrage. Le décodeur détermine la longueur attendue, lit autant d'octets, puis s'assure que les deux octets suivants sont CR et LF. – seh
Cela me le rend parfaitement clair. Règle des octets Merci pour votre temps. – amn