Lo configuré apache 2.4
para comprimir el contenido antes de entregarlo al cliente, usando mod_deflate
el encabezado del cliente configurado en "Accept-Encoding: gzip"
. Así que esto ya lo puse en funcionamiento, generando un archivo comprimido con gzip válido:
curl --header "Accept-Encoding: gzip" https://my.website/ > content.gz
¿Hay alguna manera de permitir "Accept-Encoding: zip"
comprimir como zip
?
Hasta donde tengo entendido la documentación, esto no parece posible:
La codificación gzip es la única compatible para garantizar la compatibilidad total con implementaciones de navegadores antiguos. La codificación deflate no es compatible... (https://httpd.apache.org/docs/2.4/mod/mod_deflate.html)
La pregunta proviene de un Windows
usuario que no puede descomprimir gzip
archivos (supongo que solo usa herramientas nativas de Windows).
[editar: como señaló Gerald-schneider, un navegador descomprimirá automáticamente el contenido, pero estamos utilizando curl
herramientas de línea de comandos para poder programar la API y, por lo tanto, no hay ningún navegador involucrado. Gracias también a todas las demás respuestas y comentarios, creo que debería haber sido más preciso, es decir, escribir el curl
comando para empezar].
Respuesta1
Creo que no entendiste para qué sirve la compresión en el protocolo HTTP. No es para descargar archivos. Es para reducir los datos que se transfieren cuando simplemente estás navegando. Los archivos que comprimen son HTML, CSS, JavaScripts e imágenes. La descompresión la gestiona el navegador antes de mostrar las páginas. Y los navegadores pueden manejar gzip perfectamente en Windows.
Respuesta2
Como se señala en la cita de la pregunta de la documentación de Apache, esnoEs posible configurar Apache para servir contenido comprimido zip
con el mod_deflate
encabezado del cliente configurado en Accept-Encoding: zip
. Sólo gzip
funciona. Si un usuario utiliza unnavegadorese navegador lo decodificará sobre la marcha. Si el usuariodescargasel contenido, por ejemplo, curl
tiene que comprimir el gzip
contenido editado, ya sea con herramientas nativas del sistema operativo o con herramientas instaladas (estas últimas necesarias, por ejemplo, para usuarios de Windows).
Respuesta3
Al leer tu comentario, no estoy seguro de lo que estás preguntando:
- ¿Quiere que su servidor Apache envíe un archivo normal (piense en html o texto sin formato) con codificación Zip en lugar de Gzip? (Imposible según la documentación)
- ¿Quieres que curl pueda recuperar datos de tu servidor? (en ese caso, no necesita preocuparse por la codificación, ya que es sólo una optimización de red "menor")
- ¿Quieres que curl descargue algún contenido zip? En ese caso, deberías configurar httpd para que sirva directamente tu archivo zip con algunas configuraciones de "archivo estático".
De todos modos, no estoy seguro de que la codificación del contenido sea lo que estás buscando aquí...