Skip to content
Snippets Groups Projects
Forked from Maunium / synapse
Source project has a limited visibility.
  • Michael[tm] Smith's avatar
    27c06a6e
    Drop Origin & Accept from Access-Control-Allow-Headers value (#10114) · 27c06a6e
    Michael[tm] Smith authored
    * Drop Origin & Accept from Access-Control-Allow-Headers value
    
    This change drops the Origin and Accept header names from the value of the
    Access-Control-Allow-Headers response header sent by Synapse. Per the CORS
    protocol, it’s not necessary or useful to include those header names.
    
    Details:
    
    Per-spec at https://fetch.spec.whatwg.org/#forbidden-header-name, Origin
    is a “forbidden header name” set by the browser and that frontend
    JavaScript code is never allowed to set.
    
    So the value of Access-Control-Allow-Headers isn’t relevant to Origin or
    in general to other headers set by the browser itself — the browser
    never ever consults the Access-Control-Allow-Headers value to confirm
    that it’s OK for the request to include an Origin header.
    
    And per-spec at https://fetch.spec.whatwg.org/#cors-safelisted-request-header,
    Accept is a “CORS-safelisted request-header”, which means that browsers
    allow requests to contain the Accept header regardless of whether the
    Access-Control-Allow-Headers value contains "Accept".
    
    So it’s unnecessary for the Access-Control-Allow-Headers to explicitly
    include Accept. Browsers will not perform a CORS preflight for requests
    containing an Accept request header.
    
    Related: https://github.com/matrix-org/matrix-doc/pull/3225
    
    
    
    Signed-off-by: default avatarMichael[tm] Smith <mike@w3.org>
    27c06a6e
    History
    Drop Origin & Accept from Access-Control-Allow-Headers value (#10114)
    Michael[tm] Smith authored
    * Drop Origin & Accept from Access-Control-Allow-Headers value
    
    This change drops the Origin and Accept header names from the value of the
    Access-Control-Allow-Headers response header sent by Synapse. Per the CORS
    protocol, it’s not necessary or useful to include those header names.
    
    Details:
    
    Per-spec at https://fetch.spec.whatwg.org/#forbidden-header-name, Origin
    is a “forbidden header name” set by the browser and that frontend
    JavaScript code is never allowed to set.
    
    So the value of Access-Control-Allow-Headers isn’t relevant to Origin or
    in general to other headers set by the browser itself — the browser
    never ever consults the Access-Control-Allow-Headers value to confirm
    that it’s OK for the request to include an Origin header.
    
    And per-spec at https://fetch.spec.whatwg.org/#cors-safelisted-request-header,
    Accept is a “CORS-safelisted request-header”, which means that browsers
    allow requests to contain the Accept header regardless of whether the
    Access-Control-Allow-Headers value contains "Accept".
    
    So it’s unnecessary for the Access-Control-Allow-Headers to explicitly
    include Accept. Browsers will not perform a CORS preflight for requests
    containing an Accept request header.
    
    Related: https://github.com/matrix-org/matrix-doc/pull/3225
    
    
    
    Signed-off-by: default avatarMichael[tm] Smith <mike@w3.org>