caption: Make <ph name="ACAM_HEADER_NAME">Access-Control-Allow-Methods</ph> matching in <ph name="CORS">CORS</ph> preflight spec conformant
default: true
desc: |-
  This policy controls whether request methods are uppercased when matching with <ph name="ACAM_HEADER_NAME">Access-Control-Allow-Methods</ph> response headers in <ph name="CORS">CORS</ph> preflight.

  If the policy is Disabled, request methods are uppercased.
  This is the behavior on or before <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> 108.

  If the policy is Enabled or not set, request methods are not uppercased, unless matching case-insensitively with <ph name="DELETE_METHOD_NAME">DELETE</ph>, <ph name="GET_METHOD_NAME">GET</ph>, <ph name="HEAD_METHOD_NAME">HEAD</ph>, <ph name="OPTIONS_METHOD_NAME">OPTIONS</ph>, <ph name="POST_METHOD_NAME">POST</ph>, or <ph name="PUT_METHOD_NAME">PUT</ph>.
  This would reject <ph name="REJECTED_CASE">fetch(url, {method: 'Foo'}) + "Access-Control-Allow-Methods: FOO"</ph> response header,
  and would accept <ph name="ACCEPTED_CASE">fetch(url, {method: 'Foo'}) + "Access-Control-Allow-Methods: Foo"</ph> response header.

  Note: request methods <ph name="POST_LOWERCASE_METHOD_NAME">"post"</ph> and <ph name="PUT_LOWERCASE_METHOD_NAME">"put"</ph> are not affected, while <ph name="PATCH_LOWERCASE_METHOD_NAME">"patch"</ph> is affected.

  This policy is intended to be temporary and will be removed in the future.
example_value: true
features:
  dynamic_refresh: false
  per_profile: true
future_on:
- fuchsia
items:
- caption: Do not uppercase request methods except for DELETE/GET/HEAD/OPTIONS/POST/PUT
  value: true
- caption: Always uppercase request methods
  value: false
owners:
- toyoshim@chromium.org
- hiroshige@chromium.org
schema:
  type: boolean
supported_on:
- chrome_os:109-
- chrome.*:109-
- android:109-
tags: []
type: main
