wake-up-neo.com

Ist Content-Transfer-Encoding ein HTTP-Header?

Ich schreibe einen Webdienst, der eine base64-codierte PDF Datei zurückgibt, daher ist mein Plan, der Antwort zwei Überschriften hinzuzufügen:

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

Meine Frage ist: Ist Content-Transfer-Encoding ein gültiger HTTP-Header? Ich denke, es könnte nur für MIME sein. Wenn nicht, wie sollte ich meine HTTP-Antwort erstellen, um die Tatsache darzustellen, dass ich eine base64-codierte PDF-Datei zurückgebe? Vielen Dank.

EDIT:

Es sieht so aus, als ob HTTP diesen Header nicht unterstützt. From RFC2616 Section 14 :

Hinweis: Während die Definition von Content-MD5 für HTTP genau so ist wie in RFC 1864 für MIME-Entitätskörper, gibt es verschiedene Möglichkeiten, wie sich die Anwendung von Content-MD5 auf HTTP-Entitätskörper von der Anwendung auf MIME-Entitätskörper unterscheidet. Körper. Eine davon ist, dass HTTP im Gegensatz zu MIME keine Content-Transfer-Codierung und keine Transfer-Codierung und Content-Codierung verwendet.

Irgendwelche Ideen, worauf ich meine Header setzen soll? Vielen Dank.

EDIT 2

Viele der Codebeispiele in den Kommentaren dieser PHP Referenzhandbuchseite scheinen darauf hinzudeuten, dass es sich bei um einen gültigen HTTP-Header handelt:

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

38
Michael

Laut RFC 1341 (überholt durch RFC 2045 ):

Ein Content-Transfer-Encoding-Header-Feld, in dem eine Zusatzcodierung angegeben werden kann, die auf die Daten angewendet wurde, damit diese E-Mail-Transportmechanismen passieren können, die möglicherweise Daten- oder Zeichensatzbeschränkungen aufweisen.

und später:

Viele Inhaltstypen, die sinnvoll per E-Mail transportiert werden könnten, werden in ihrem "natürlichen" Format als 8-Bit-Zeichen oder Binärdaten dargestellt. Solche Daten können nicht über bestimmte Transportprotokolle übertragen werden. Beispielsweise beschränkt RFC 821 E-Mail-Nachrichten auf 7-Bit-US-ASCII-Daten mit 1000 Zeichenzeilen.

Es ist daher notwendig, einen Standardmechanismus zum Umcodieren solcher Daten in ein 7-Bit-Kurzzeilenformat zu definieren. (...) Das Feld Content-Transfer-Encoding wird verwendet, um die Art der Transformation anzugeben, die verwendet wurde, um den Körper für den Transport auf akzeptable Weise darzustellen.

Da Sie einen Webservice haben, der nichts mit E-Mails zu tun hat, sollten Sie diesen Header nicht verwenden.

Sie können Content-Encoding Header, der angibt, dass die übertragenen Daten komprimiert wurden (gzip-Wert).

Ich denke das in deinem Fall

Content-Type: application/pdf

reicht. Zusätzlich können Sie Content-Length Header, aber meiner Meinung nach, wenn Sie Webservice erstellen (es ist nicht http-Server/Proxy-Server) Content-Type reicht. Bitte beachten Sie, dass einige bestimmte Überschriften (z. B. Transfer-Encoding) Wenn sie nicht richtig verwendet werden, kann dies zu unerwarteten Kommunikationsproblemen führen. Wenn Sie sich also bei der Verwendung eines Headers nicht hundertprozentig sicher sind - ob Sie ihn wirklich benötigen oder nicht -, verwenden Sie ihn einfach nicht.

26
omnomnom