Express returns a non-compliant HTTP/206 response when gzip is enabled
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 35/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- javascript, node.js
- Lĩnh vực
- backend
Hướng nghiên cứu
Bắt đầu với bản tái hiện nodejs-express-range-headers được liên kết và RFC7233, sau đó theo dõi cách middleware nén xử lý các yêu cầu Range và tạo status cùng các header của response. Hoàn tất khi các response đã nén không còn trả về các giá trị HTTP/206 Content-Range không chính xác; hãy xác minh hành vi bằng một regression test tập trung nếu dự án có cung cấp.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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
- Ngôn ngữ chính
- JavaScript
- Star
- 2.8k
- Fork
- 261
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của expressjs/compression
-
1.8.2: intermittent HTTP response corruption on keep-alive connections (regression from the CVE-2026-87776 fix)Có thể đã có người làm @pintu544 đã nhận 4 ngày trước. Đang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 8/100
expressjs/compression#296 ·
-
Compression middleware changes behavior of undefined statusText in writeHeadCó thể đã có người làm @dyk1454683243-sudo đã nhận 31 ngày trước. Đang mởbug
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 62/100
expressjs/compression#254 · 2 bình luận ·
-
Compression v2Có thể làm lại được @UlisesGascon đã nhận 524 ngày trước và không có pull request nào đang mở. Đang mở
expressjs/compression#234 · 1 reaction · 2 người được giao ·
-
awaiting more info bug
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
expressjs/compression#220 · 11 bình luận · 2 reaction ·
-
Support zstdCó thể đã có người làm @polys đã nhận 435 ngày trước. Đang mởenhancement future
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 30/100
expressjs/compression#217 · 4 bình luận · 12 reaction ·
Tất cả issue của expressjs/compression
Issue tương tự
-
enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
ericcornelissen/depreman#591 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
NanmiCoder/dsh-agent-teams#269 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 65/100
Maintainer thường phản hồi trong vòng 1 ngày
-
전문가 노하우 케이스 형식에 재검토 시점을 필수로 둔다Đang mởdocs
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
idean3885/claude-ops-agent#765 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
docs html v6
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày