Open
Description
Describe the bug
It is sometimes necessary to modify the Access-Control-Expose-Headers within the request cycle. As an example, a developer might need to set the Content-Disposition and Content-Type when returning a file from an API so that it has a name, for e.g.:
Content-Disposition: attachment; filename="myfile.csv"
Content-Type: text/csv; charset=utf-8
Correlation-ID: b038c7a8662f4d21962c80ef894d0946
Access-Control-Expose-Headers: Content-Type Content-Disposition Correlation-ID
We came across a bug in production with the way Django-GUID implements the EXPOSE_HEADER setting, in that on the outgoing request processing, it overrides any setting set by the user in the request flow, because it replaces the already set Access-Control-Expose-Headers rather than being additive.
To Reproduce
- Create a view in Django
- Set "Access-Control-Expose-Headers" to some value within the view
- Set Django GUID setting "EXPOSE_HEADER" to "True"
- Make an API request to the view, look at the request, and see that the developer set value has been overwritten.
Full stack trace
N/A