2009-09-09 3 views
0

Hier I asked à propos de desservir les gammes d'octets de PHP. Aujourd'hui, ma question est - comment dois-je définir les en-têtes Content-Type et Content-Disposition lors du traitement de plusieurs plages d'octets demandées? Devrais-je les répéter pour chaque gamme d'octets ou devrais-je simplement les sortir une fois au début? Ou peut-être que je ne devrais pas les sortir du tout parce que le client devrait déjà savoir ce qu'il demande?HTTP: Comment afficher Content-Type et Content-Disposition lorsque le client demande une plage d'octets?

Répondre

1

Généralement, les en-têtes de réponse HTTP doivent être identiques (répétés) si vous renvoyez la totalité de la ressource ou seulement une partie de celle-ci; sauf bien sûr pour l'en-tête Content-Range qui variera. Rappelez-vous que HTTP est sans état, donc chaque réponse devrait être complète et capable de se tenir toute seule. Si vous utilisez des plages d'octets, vous devez également utiliser des balises d'entité (ETags); de sorte qu'il n'y a aucune chance qu'un client puisse demander et obtenir deux plages d'octets distinctes qui appartiennent réellement à différentes révisions de la même ressource.

+0

ETag ne sont pas un problème dans mon cas - le contenu ne changera jamais. –

1

Jetez un oeil à RFC 2616 (sections 14.16 et 19.2 en particulier). Si le client demande une plage d'octets unique, la réponse doit contenir une plage d'octets unique et les valeurs d'en-tête Content-Type et Content-Disposition ne changent pas de comportement (elles doivent refléter le type du fichier servi). Cependant, si le client demande plusieurs plages d'octets dans une seule requête, la réponse doit utiliser un type de contenu "multipart/byteranges" et chaque partie du corps spécifie son propre en-tête Content-Type.

+0

OK, et qu'en est-il de la disposition du contenu? –

+1

Contenu-Disposition s'applique à l'ensemble de la réponse dans son ensemble, et non à des parties de plage individuelles. Je ne suggère pas de l'inclure dans vos réponses à moins que vous ne diffusiez un fichier entier, puisque la seule utilisation définie de Content-Disposition consiste à spécifier un nom de fichier, ce qui n'est pas très significatif pour les plages d'octets. –

Questions connexes