Content-Transfer-Encoding est-il un en-tête HTTP?

J'écris un service web qui retourne un fichier PDF encodé en base64, donc mon plan est d'ajouter deux en-têtes à la réponse:

Content-Type: application/pdf
Content-Transfer-Encoding: base64

Ma question Est: est-ce que Content-Transfer-Encoding est un en-tête HTTP valide? Je pense que ce n'est peut-être que pour MIME. Sinon, comment dois-je créer ma réponse HTTP pour représenter le fait que je retourne un PDF encodé en base64? Grâce.

Modifier:

Il semble que HTTP ne supporte pas cet en-tête. De RFC2616 Section 14:

Note: alors que la définition de Content-MD5 est exactement la même pour HTTP comme dans la RFC 1864 pour les entités MIME, il existe plusieurs façons L'application de Content-MD5 à HTTP entity-bodies diffère de son demande de MIME entité-corps. L'un est que HTTP, contrairement à MIME, fait ne pas utiliser Content-Transfer-Encoding , et utilise Transfer-Encoding et Encodage De Contenu.

Des idées pour ce que je devrais définir mes en-têtes? Grâce.

Modifier 2

De nombreux exemples de code trouvés dans les commentaires de cette page de manuel de référence PHP semblent suggérer qu'il est en fait un en-tête HTTP valide:

Http://php.net/manual/en/function.header.php

30
demandé sur Bobrovsky 2011-09-02 19:02:20

1 réponses

Selon RFC 1341 (rendue obsolète par RFC 2045):

Un champ D'en-tête Content-Transfer-Encoding, qui peut être utilisé pour spécifiez un codage auxiliaire qui a été appliqué aux données afin de lui permettre de passer par des mécanismes de transport du courrier qui peuvent avoir limitations de données ou de jeu de caractères.

Et plus tard:

De nombreux types de contenu qui pourraient utilement être transportés par e-mail sont représentés, dans leur format "naturel", sous forme de caractères 8 bits ou des données binaires. Ces données ne peuvent pas être transmises sur certains transports protocole. Par exemple, la RFC 821 limite les messages électroniques à 7 bits Données US-ASCII avec 1000 lignes de caractères.

Il est donc nécessaire de définir un mécanisme standard pour ré-encoder ces données dans un format de ligne courte de 7 bits. (...) Le Content-Transfer-Encoding est utilisé pour indiquer le type de transformation qui a été utilisée dans afin de représenter le corps d'une manière acceptable pour le transport.

Puisque vous avez un webservice, qui n'a rien de commun avec les emails, vous ne devriez pas utiliser cet en-tête.

Vous pouvez utiliser l'en-tête Content-Encoding qui indique que les données transférées ont été compressées (valeur gzip).

Je pense que dans votre cas,

Content-Type: application/pdf

Est suffisant. De plus, vous pouvez définir l'en-tête Content-Length, mais à mon avis, si vous construisez webservice (ce n'est pas un serveur http / Proxy) Content-Type est suffisant. Gardez à l'esprit que certains en - têtes spécifiques (par exemple Transfer-Encoding) s'ils ne sont pas utilisés de manière appropriée, peuvent causer des problèmes de communication inattendus, donc si vous n'êtes pas sûr à 100% de l'utilisation d'un en - tête-si vous en avez vraiment besoin ou non-ne l'utilisez pas.

24
répondu Piotr De 2016-02-18 11:01:35