Express returns a non-compliant HTTP/206 response when gzip is enabled
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- javascript, node.js
- Área
- backend
Línea de trabajo
Comienza con la reproducción vinculada de nodejs-express-range-headers y RFC7233, y luego sigue cómo el middleware de compresión gestiona las solicitudes Range y produce el estado y las cabeceras de la respuesta. Se considera terminado cuando las respuestas comprimidas ya no devuelvan valores incorrectos de HTTP/206 Content-Range; verifica el comportamiento con una prueba de regresión específica si el proyecto proporciona una.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
CDNs (mostly Azure Front Door) is using HTTP Range Requests to retrieve data from Origin when caching enabled.
Express should ignore Range: requests header when gzip compression is in place since Express is unable to respond a HTTP/206 compliant answer with the right computed Content-Range header in the response that is taking the compressed data length into account.
A fair compliant workaround is to, in that very case of compression where computing Content-Range values would be too complex, ignore client's Range: header in the request, and answer the whole compressed content in a HTTP/200 response.
Handling Range: headers is optional so answering a HTTP/200 is OK.
Answering a HTTP/206 with wrong Content-Range values is notOK.
Meanwhile another workaround is to disable compression and make CDN handle it, or disable CDN caching, however it would be fair to expect Express to return a compliant HTTP response in any case.
References:
Details and highlighting Express behavior:
https://github.com/DanielLarsenNZ/nodejs-express-range-headers
- Lenguaje dominante
- JavaScript
- Estrellas
- 2.8k
- Forks
- 260
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de expressjs/compression
-
1.8.2: intermittent HTTP response corruption on keep-alive connections (regression from the CVE-2026-87776 fix)Posiblemente ocupada @pintu544 la tomó hace 1 día. Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 8/100
expressjs/compression#296 ·
-
Compression middleware changes behavior of undefined statusText in writeHeadPosiblemente ocupada @dyk1454683243-sudo la tomó hace 28 días. Abiertobug
Dificultad 3/5 1-2 días Aptitud para principiantes 62/100
expressjs/compression#254 · 2 comentarios ·
-
Compression v2Quizá libre de nuevo @UlisesGascon la tomó hace 521 días y no hay ningún pull request abierto. Abierto
expressjs/compression#234 · 1 reacción · 2 asignados ·
-
awaiting more info bug
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
expressjs/compression#220 · 11 comentarios · 2 reacciones ·
-
Support zstdPosiblemente ocupada @polys la tomó hace 432 días. Abiertoenhancement future
Dificultad 4/5 3-5 días Aptitud para principiantes 30/100
expressjs/compression#217 · 4 comentarios · 12 reacciones ·
Todos los issues de expressjs/compression
Issues similares
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 65/100
521xueweihan/HelloGitHub#4025 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
yetone/magpie#2844 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
c1overzz/dsh-bili-scroll#22 ·
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
maproulette/maproulette-frontend#2944 ·
Los mantenedores suelen responder en 1 día