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
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.
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.
OK, et qu'en est-il de la disposition du contenu? –
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. –
- 1. Récupérer le certificat SSL avec Zend Http Demande et réponse
- 2. Comment empêcher le client http apache de suivre une redirection
- 3. Demande HTTP POST et GET pour WinXP
- 4. C# HTTP Demande Parser
- 5. Comment faire pour afficher une alerte lorsque la connexion HTTP échoue sur l'iPhone?
- 6. Comment IE6 prend-il ContentType au sérieux?
- 7. Demande HTTP SOAP très lente
- 8. Demande http sur un événement avec (jQuery?)
- 9. Comment calculer la plage IP lorsque l'adresse IP et le masque de réseau sont donnés?
- 10. Jetty Client HTTP avec SSL
- 11. Afficher le texte de l'espace client
- 12. Comment afficher l'état d'énorme processus client (web)
- 13. Pourquoi mon client envoie-t-il une demande si lentement?
- 14. Comment utiliser le complément Openoffice calc qui renvoie une plage?
- 15. Django contenttype question
- 16. HTTP HEAD Demande en Javascript/Ajax?
- 17. Le proxy HTTP/FastCGI/SCGI ne ferme pas la connexion lorsque le client est déconnecté - bug ou fonctionnalité?
- 18. Blocs client http sur recv()
- 19. Comment créer une connexion proxy client dynamique lorsque le type est inconnu?
- 20. Effectuer une demande HTTP/HTTP POST simple en ASCII/UTF-8 en Python?
- 21. Afficher ou masquer une barre de titre à la demande
- 22. Comment afficher une boîte de message Oui/Non dans un composant WebPart et obtenir le choix du client?
- 23. Connaître le ContentType d'une image à partir de l'octet []
- 24. Application.GetResourceStream renvoie StreamResourceInfo où ContentType est vide
- 25. HTTP performance Demande de grands volumes de demandes
- 26. Comment un serveur HTTP (utilisant des sockets) devrait-il détecter que le client n'est plus connecté et abandonner le traitement?
- 27. Ecriture d'un client HTTP "brut" en C#
- 28. Format de plage Excel: le formatage est automatique lorsque Range :: Value2 est défini
- 29. Mjpeg VLC et HTTP Streaming
- 30. Client HTTP vraiment bizarre utilisant TcpClient en C#
ETag ne sont pas un problème dans mon cas - le contenu ne changera jamais. –