fix: RFC 2183/5987 compliant Content-Disposition header in /view endpoint #11537
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.
Summary
Fixes the
Content-Dispositionheader in the/viewendpoint to comply with RFC 2183 and RFC 5987.Before:
Content-Disposition: filename="name.ext"After:
Content-Disposition: attachment; filename="name.ext"; filename*=UTF-8''name.extProblem
The current header format is missing the required disposition-type (
attachment;) per RFC 2183. This causes third-party download libraries (e.g., Go'smime.ParseMediaType) to fail to parse the filename, resulting in files being saved with incorrect names like "view" instead of the actual filename.Reported in #8914.
Changes
create_content_disposition_header()helper function that generates RFC-compliant headersview_imageendpointfilename=for legacy clients (non-ASCII chars replaced with?)filename*=UTF-8''parameter for proper international filename supportTesting
curl -I "http://localhost:8188/view?filename=test.png"Compatibility
This change is backward compatible:
filename*parameter for UTF-8 supportfilenameparameterattachment;disposition-type is universally supportedFixes #8914