Do not abort request when response content-type is malformed

This commit is contained in:
Kevin Pollet 2025-03-26 11:30:05 +01:00 committed by GitHub
parent 5953331c73
commit 42778d2ba6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 15 additions and 1 deletions

View File

@ -233,8 +233,12 @@ func (r *responseWriter) Write(p []byte) (int, error) {
// Disable compression according to user wishes in excludedContentTypes or includedContentTypes.
if ct := r.rw.Header().Get(contentType); ct != "" {
mediaType, params, err := mime.ParseMediaType(ct)
// To align the behavior with the klauspost handler for Gzip,
// if the MIME type is not parsable the compression is disabled.
if err != nil {
return 0, fmt.Errorf("parsing content-type media type: %w", err)
r.compressionDisabled = true
r.rw.WriteHeader(r.statusCode)
return r.rw.Write(p)
}
if len(r.includedContentTypes) > 0 {

View File

@ -577,6 +577,11 @@ func Test_ExcludedContentTypes(t *testing.T) {
contentType: "",
expCompression: true,
},
{
desc: "MIME malformed",
contentType: "application/json;charset=UTF-8;charset=utf-8",
expCompression: false,
},
{
desc: "MIME match",
contentType: "application/json",
@ -687,6 +692,11 @@ func Test_IncludedContentTypes(t *testing.T) {
contentType: "",
expCompression: true,
},
{
desc: "MIME malformed",
contentType: "application/json;charset=UTF-8;charset=utf-8",
expCompression: false,
},
{
desc: "MIME match",
contentType: "application/json",