http - octet - header force download
¿Content-Transfer-Encoding es un encabezado HTTP? (1)
Según RFC 1341 (obsoleto por RFC 2045 ):
Un campo de encabezado Content-Transfer-Encoding, que se puede usar para especificar una codificación auxiliar que se aplicó a los datos para permitirle pasar a través de los mecanismos de transporte de correo que pueden tener limitaciones de datos o conjuntos de caracteres.
y después:
Muchos tipos de contenido que podrían ser útiles transportados por correo electrónico están representados, en su formato "natural", como caracteres de 8 bits o datos binarios. Dichos datos no se pueden transmitir a través de algunos protocolos de transporte. Por ejemplo, RFC 821 restringe los mensajes de correo a datos US-ASCII de 7 bits con líneas de 1000 caracteres.
Por lo tanto, es necesario definir un mecanismo estándar para recodificar dichos datos en un formato de línea corta de 7 bits. (...) El campo Contenido-Transferencia-Codificación se usa para indicar el tipo de transformación que se ha utilizado para representar el cuerpo de una manera aceptable para el transporte.
Como tiene un servicio web, que no tiene nada en común con los correos electrónicos, no debe usar este encabezado.
Puede usar el encabezado Content-Encoding
que indica que los datos transferidos se han comprimido (valor gzip).
Creo que en tu caso
Content-Type: application/pdf
es suficiente. Además, puede configurar el encabezado Content-Length
, pero en mi opinión, si está creando un servicio web (no es un servidor http / proxy) Content-Type
es suficiente. Tenga en cuenta que algunos encabezados específicos (por ejemplo Transfer-Encoding
), si no se usan adecuadamente, pueden causar problemas de comunicación inesperados, por lo que si no está 100% seguro sobre el uso de algún encabezado, si realmente lo necesita o no, simplemente no lo haga. t lo usas
Estoy escribiendo un servicio web que devuelve un archivo PDF codificado en base64, por lo que mi plan es agregar dos encabezados a la respuesta:
Content-Type: application/pdf
Content-Transfer-Encoding: base64
Mi pregunta es: ¿ Content-Transfer-Encoding
un encabezado HTTP válido? Creo que solo podría ser para MIME. De lo contrario, ¿cómo debo diseñar mi respuesta HTTP para representar el hecho de que estoy devolviendo un PDF codificado en base64? Gracias.
EDITAR:
Parece que HTTP no soporta este encabezado. De RFC2616 Sección 14 :
Nota: si bien la definición de Content-MD5 es exactamente la misma para HTTP que en RFC 1864 para cuerpos de entidad MIME, hay varias maneras en que la aplicación de Content-MD5 a entidad de HTTP cuerpos difiere de su aplicación a entidad MIME cuerpos. Una es que HTTP, a diferencia de MIME, no usa la codificación de transferencia de contenido, y la codificación de transferencia y la codificación de contenido.
¿Alguna idea para lo que debería establecer mis encabezados? Gracias.
Editar 2
Muchos de los ejemplos de código encontrados en los comentarios de esta página de manual de referencia de PHP parecen sugerir que en realidad es un encabezado HTTP válido: