web-dev-qa-db-fra.com

Différence entre les en-têtes Content-Range et Range?

Quelle est la différence entre les en-têtes HTTP Content-Range et Range? Quand faut-il utiliser chacun?

J'essaie de diffuser un fichier audio à partir d'un décalage d'octet particulier. Dois-je utiliser Content-Range ou Range header?

Merci

67
lostInTransit

Range est utilisé dans la requête, pour demander une plage (ou des plages) d'octets particulière. Content-Range est utilisé dans la réponse, pour indiquer les octets que le serveur vous donne (qui peuvent être différents de la plage que vous avez demandée), ainsi que la durée du contenu entier (s'il est connu) .

77
Brian Campbell

En fait, la réponse acceptée n'est pas complète. Content-Range n'est pas seulement utilisé dans les réponses. Il est également légal dans les demandes qui fournissent un organisme d'entité.

Par exemple, un HTTP PUT fournit un corps d'entité, il peut ne fournir qu'une partie d'une entité. Ainsi, la demande PUT peut inclure un en-tête Content-Range indiquant au serveur où le corps d'entité partiel doit être fusionné dans l'entité.

Par exemple, créons d'abord puis ajoutons à un fichier en utilisant HTTP:

Demande 1:

PUT /file HTTP/1.1
Host: server
Content-Length: 1

a

Demande 2:

PUT /file HTTP/1.1
Host: server
Content-Range: bytes 1-2/*
Content-Length: 1

a

Comment, voyons le contenu du fichier ...

Demande 3:

GET /file HTTP/1.1
Host: server

HTTP/1.1 200 OK
Content-Length: 2

aa

Cela permet un accès aléatoire aux fichiers, à la fois en LECTURE et en ÉCRITURE via HTTP. Je voulais juste clarifier, car je faisais des recherches sur l'utilisation de Content-Range dans un client WebDAV que je suis en train de développer, alors peut-être que ces informations étendues s'avéreront utiles à quelqu'un d'autre.

126
btimby