fix: preserve original value when Content-Type is unrecognized#7067
Closed
Nicknamess96 wants to merge 1 commit intoexpressjs:masterfrom
Closed
fix: preserve original value when Content-Type is unrecognized#7067Nicknamess96 wants to merge 1 commit intoexpressjs:masterfrom
Nicknamess96 wants to merge 1 commit intoexpressjs:masterfrom
Conversation
When res.set('Content-Type', value) is called with a value that
mime.contentType() cannot resolve (returns false), preserve the
original user-supplied value instead of setting the header to the
literal string "false".
Previously, mime.contentType(value) returning false caused
value = false, which was coerced to the string "false" by
setHeader(). This is inconsistent with res.type() which falls
back to "application/octet-stream" for unknown types.
Fixes expressjs#7034
Contributor
|
Duplicate of #7035 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
When
res.set('Content-Type', value)is called with a value thatmime.contentType()cannot resolve (returnsfalse), the Content-Type header is currently set to the literal string"false".This happens because
mime.contentType(value)returnsfalsefor unrecognized types, and thatfalsevalue is passed tosetHeader(), which coerces it to the string"false".The fix preserves the original user-supplied value when
mime.contentType()returnsfalse, sores.set('Content-Type', 'some-custom-type')will set the header to"some-custom-type"instead of"false".This is consistent with how
res.type()handles unknown types (it falls back to"application/octet-stream"rather than propagatingfalse).Reproduction:
Changes:
lib/response.js: Only assign the result ofmime.contentType()when it returns a truthy valuetest/res.set.js: Add 5 test cases covering known types, shorthand types, unknown types, the false regression, and full MIME types with slashesFixes #7034