-
-
Notifications
You must be signed in to change notification settings - Fork 107
Description
Search for duplicate issues
- I already searched, and this issue is not a duplicate.
Issue scope
Docker / Kubernetes
Describe the bug
If I run SWS with my "frontend" package, with both regular and pre-compressed files (.gzip), I see an unexpected content-encoding returned by SWS: content-encoding: gzip, gzip.
After verification, the content is packaged twice, aka a gzip inside a gzip.
This generates issues with Apple based browsers, because they don't process gzip twice and so can't parse js or css after the first "unpackaging".
How to reproduce it
Find attached files I have generated, with the unexpected result in SWS:
If I run the SWS with docker run -it --rm -p 8080:8080 ui-for-testing, using the following configuration:
[general]
host = "::"
port = 8080
log-level = "info"
cache-control-headers = true
compression = true
compression-static = true
security-headers = true
directory-listing = false
redirect-trailing-slash = true
ignore-hidden-files = trueI get the following result when I run the following curl call:
curl 'http://localhost:8080/app.min.css' \
-H 'Accept: */*' \
-H 'Accept-Encoding: gzip' \
-v -o nul &| grep content-encoding
< content-encoding: gzip, gzipIf I set compression-static = false, the result is "normal", but I suspect the compression is done by SWS and doesn't leverage the pre-built gzip file.
curl 'http://localhost:8080/app.min.css' \
-H 'Accept: */*' \
-H 'Accept-Encoding: gzip' \
-v -o nul &| grep content-encoding
< content-encoding: gzip
Expected behavior
I expect the system to leverage the pre-build gzip and returns a content-type with only gzip once.
Complementary information
From the investigation I did, this bug has been introduced after 2.31.0.
If I change my Dockerfile to 2.32.0, I have the issue, but I don't have it with 2.31.0, of course with the same config and files.
Build target
Docker linux/amd64
Environment and specs
- static-web-server: [e.g. v2.32.0+]
- Rust: [e.g. v1.78.0]
- OS: Distrolesss
- Arch: x86_64 (64-bit), ARM (32-bit), ARM64 (64-bit)
- Docker: 27.1.1
- Client: All (Safari, Chrome, Arc,
curl)
Additional context
This issue has been found while developing on my application, Podcast-Server, and you can find the code used by the UI here