FreeToGenerate.com

Le registre n’a pas de colonne requête ou réponse. Toute liste qui range les en-têtes ainsi les range selon le jugement de quelqu’un.

257 champs

Ce que veulent dire les étiquettes

un script peut le définir
Rien dans la norme Fetch n’empêche un script d’envoyer cet en-tête sur une requête qu’il émet.
un script ne peut pas le définir
Il figure sur la liste des interdits de la norme Fetch : le navigateur en garde le contrôle et ignore silencieusement toute tentative de le définir.
fermé par préfixe
Son nom commence par un préfixe réservé : aucun script ne pourra jamais le définir. C’est tout l’intérêt de cet espace de noms — les en-têtes qu’on y crée ne peuvent pas être falsifiés par le code de la page.
dépend de la valeur
Interdit seulement lorsque la valeur nomme une méthode que le navigateur refuse de remplacer.
nom sur la liste CORS
L’appartenance à la liste dépend aussi de la valeur : ce nom seul ne signifie donc pas que la requête échappe au préliminaire.
un script ne peut pas le lire
La norme Fetch interdit à un script de lire cet en-tête sur une réponse, quels que soient les en-têtes CORS.
pas un en-tête
Enregistré avec le commentaire (reserved), c’est-à-dire enregistré pour que personne ne l’enregistre jamais.
Type structuré
Comment la valeur s’analyse selon la spécification des champs structurés, qui évite de lire l’ABNF à la main.

Permanents

Enregistrés pour de bon, avec une spécification derrière eux.

*un script peut le définirpas un en-tête

Référence: RFC 9110 §12.5.5

(reserved)

A-IMun script peut le définir

Référence: RFC 3229

Acceptun script peut le définirnom sur la liste CORS

Référence: RFC 9110 §12.5.1

Accept-Additionsun script peut le définir

Référence: RFC 2324

Accept-CHun script peut le définirList

Référence: RFC 8942 §3.1

Accept-Datetimeun script peut le définir

Référence: RFC 7089

Accept-Encodingun script ne peut pas le définir

Référence: RFC 9110 §12.5.3

Accept-Featuresun script peut le définir

Référence: RFC 2295

Accept-Languageun script peut le définirnom sur la liste CORS

Référence: RFC 9110 §12.5.4

Accept-Patchun script peut le définir

Référence: RFC 5789

Accept-Postun script peut le définir

Référence: Linked Data Platform 1.0

Accept-Queryun script peut le définirList

Référence: RFC 10008 §3

Accept-Rangesun script peut le définir

Référence: RFC 9110 §14.3

Accept-Signatureun script peut le définir

Référence: RFC 9421 §5.1

Access-Control-Allow-Credentialsun script peut le définir

Référence: Fetch

Access-Control-Allow-Headersun script peut le définir

Référence: Fetch

Access-Control-Allow-Methodsun script peut le définir

Référence: Fetch

Access-Control-Allow-Originun script peut le définir

Référence: Fetch

Access-Control-Expose-Headersun script peut le définir

Référence: Fetch

Access-Control-Max-Ageun script peut le définir

Référence: Fetch

Access-Control-Request-Headersun script ne peut pas le définir

Référence: Fetch

Access-Control-Request-Methodun script ne peut pas le définir

Référence: Fetch

Ageun script peut le définir

Référence: RFC 9111 §5.1

Allowun script peut le définir

Référence: RFC 9110 §10.2.1

ALPNun script peut le définir

Référence: RFC 7639 §2

Alt-Svcun script peut le définir

Référence: RFC 7838

Alt-Usedun script peut le définir

Référence: RFC 7838

Alternatesun script peut le définir

Référence: RFC 2295

Apply-To-Redirect-Refun script peut le définir

Référence: RFC 4437

Authentication-Controlun script peut le définir

Référence: RFC 8053 §4

Authentication-Infoun script peut le définir

Référence: RFC 9110 §11.6.3

Authorizationun script peut le définir

Référence: RFC 9110 §11.6.2

Available-Dictionaryun script peut le définirItem

Référence: RFC 9842 §2.2

Cache-Controlun script peut le définir

Référence: RFC 9111 §5.2

Cache-Group-Invalidationun script peut le définirList

Référence: RFC 9875

Cache-Groupsun script peut le définirList

Référence: RFC 9875

Cache-Statusun script peut le définirList

Référence: RFC 9211

Cal-Managed-IDun script peut le définir

Référence: RFC 8607 §5.1

CalDAV-Timezonesun script peut le définir

Référence: RFC 7809 §7.1

Capsule-Protocolun script peut le définirItem

Référence: RFC 9297

CDN-Cache-Controlun script peut le définirDictionary

Référence: RFC 9213

Cache directives targeted at content delivery networks

CDN-Loopun script peut le définir

Référence: RFC 8586

Cert-Not-Afterun script peut le définir

Référence: RFC 8739 §3.3

Cert-Not-Beforeun script peut le définir

Référence: RFC 8739 §3.3

Clear-Site-Dataun script peut le définir

Référence: Clear Site Data

Client-Certun script peut le définirItem

Référence: RFC 9440 §2

Client-Cert-Chainun script peut le définirList

Référence: RFC 9440 §2

Closeun script peut le définirpas un en-tête

Référence: RFC 9112 §9.6

(reserved)

Concealed-Auth-Exportun script peut le définirItem

Référence: RFC 9729

Connectionun script ne peut pas le définir

Référence: RFC 9110 §7.6.1

Content-Digestun script peut le définirDictionary

Référence: RFC 9530 §2

Content-Dispositionun script peut le définir

Référence: RFC 6266

Content-Encodingun script peut le définir

Référence: RFC 9110 §8.4

Content-Languageun script peut le définirnom sur la liste CORS

Référence: RFC 9110 §8.5

Content-Lengthun script ne peut pas le définir

Référence: RFC 9110 §8.6

Content-Locationun script peut le définir

Référence: RFC 9110 §8.7

Content-Rangeun script peut le définir

Référence: RFC 9110 §14.4

Content-Security-Policyun script peut le définir

Référence: Content Security Policy Level 3

Content-Security-Policy-Report-Onlyun script peut le définir

Référence: Content Security Policy Level 3

Content-Typeun script peut le définirnom sur la liste CORS

Référence: RFC 9110 §8.3

Cookieun script ne peut pas le définir

Référence: RFC-ietf-httpbis-rfc6265bis-22, Section 5.8.1

Cross-Origin-Embedder-Policyun script peut le définirItem

Référence: HTML

Cross-Origin-Embedder-Policy-Report-Onlyun script peut le définirItem

Référence: HTML

Cross-Origin-Opener-Policyun script peut le définirItem

Référence: HTML

Cross-Origin-Opener-Policy-Report-Onlyun script peut le définirItem

Référence: HTML

Cross-Origin-Resource-Policyun script peut le définir

Référence: Fetch

DASLun script peut le définir

Référence: RFC 5323

Dateun script ne peut pas le définir

Référence: RFC 9110 §6.6.1

DAVun script peut le définir

Référence: RFC 4918

Delta-Baseun script peut le définir

Référence: RFC 3229

Deprecationun script peut le définirItem

Référence: RFC 9745 §2

Depthun script peut le définir

Référence: RFC 4918

Destinationun script peut le définir

Référence: RFC 4918

Detached-JWSun script peut le définir

Référence: RFC 9635

Dictionary-IDun script peut le définirItem

Référence: RFC 9842 §2.3

DPoPun script peut le définir

Référence: RFC 9449

DPoP-Nonceun script peut le définir

Référence: RFC 9449

Early-Dataun script peut le définir

Référence: RFC 8470

ETagun script peut le définir

Référence: RFC 9110 §8.8.3

Expectun script ne peut pas le définir

Référence: RFC 9110 §10.1.1

Expiresun script peut le définir

Référence: RFC 9111 §5.3

Forwardedun script peut le définir

Référence: RFC 7239

Fromun script peut le définir

Référence: RFC 9110 §10.1.2

Hobaregun script peut le définir

Référence: RFC 7486 §6.1.1

Hostun script ne peut pas le définir

Référence: RFC 9110 §7.2

Ifun script peut le définir

Référence: RFC 4918

If-Matchun script peut le définir

Référence: RFC 9110 §13.1.1

If-Modified-Sinceun script peut le définir

Référence: RFC 9110 §13.1.3

If-None-Matchun script peut le définir

Référence: RFC 9110 §13.1.2

If-Rangeun script peut le définir

Référence: RFC 9110 §13.1.5

If-Schedule-Tag-Matchun script peut le définir

Référence: RFC 6338

If-Unmodified-Sinceun script peut le définir

Référence: RFC 9110 §13.1.4

IMun script peut le définir

Référence: RFC 3229

Include-Referred-Token-Binding-IDun script peut le définir

Référence: RFC 8473

Incrementalun script peut le définir

Référence: RFC-ietf-httpbis-incremental-04

Keep-Aliveun script ne peut pas le définir

Référence: RFC 2068

Labelun script peut le définir

Référence: RFC 3253

Last-Event-IDun script peut le définir

Référence: HTML

Last-Modifiedun script peut le définir

Référence: RFC 9110 §8.8.2

Linkun script peut le définir

Référence: RFC 8288

Link-Templateun script peut le définir

Référence: RFC 9652

Locationun script peut le définir

Référence: RFC 9110 §10.2.2

Lock-Tokenun script peut le définir

Référence: RFC 4918

Max-Forwardsun script peut le définir

Référence: RFC 9110 §7.6.2

Memento-Datetimeun script peut le définir

Référence: RFC 7089

Meterun script peut le définir

Référence: RFC 2227

MIME-Versionun script peut le définir

Référence: RFC 9112 App. B.1

Negotiateun script peut le définir

Référence: RFC 2295

NELun script peut le définir

Référence: Network Error Logging

OData-EntityIdun script peut le définir

Référence: OData Version 4.01 Part 1, OASIS, Chet_Ensign

OData-Isolationun script peut le définir

Référence: OData Version 4.01 Part 1, OASIS, Chet_Ensign

OData-MaxVersionun script peut le définir

Référence: OData Version 4.01 Part 1, OASIS, Chet_Ensign

OData-Versionun script peut le définir

Référence: OData Version 4.01 Part 1, OASIS, Chet_Ensign

Optional-WWW-Authenticateun script peut le définir

Référence: RFC 8053 §3

Ordering-Typeun script peut le définir

Référence: RFC 3648

Originun script ne peut pas le définir

Référence: RFC 6454

Origin-Agent-Clusterun script peut le définirItem

Référence: HTML

OSCOREun script peut le définir

Référence: RFC 8613 §11.1

OSLC-Core-Versionun script peut le définir

Référence: OASIS Project Specification 01, OASIS, Chet_Ensign

Overwriteun script peut le définir

Référence: RFC 4918

Ping-Fromun script peut le définir

Référence: HTML

Ping-Toun script peut le définir

Référence: HTML

Positionun script peut le définir

Référence: RFC 3648

Preferun script peut le définir

Référence: RFC 7240

Preference-Appliedun script peut le définir

Référence: RFC 7240

Priorityun script peut le définirDictionary

Référence: RFC 9218

Proxy-Authenticatefermé par préfixe

Référence: RFC 9110 §11.7.1

Proxy-Authentication-Infofermé par préfixe

Référence: RFC 9110 §11.7.3

Proxy-Authorizationfermé par préfixe

Référence: RFC 9110 §11.7.2

Proxy-Statusfermé par préfixeList

Référence: RFC 9209

Public-Key-Pinsun script peut le définir

Référence: RFC 7469

Public-Key-Pins-Report-Onlyun script peut le définir

Référence: RFC 7469

Rangeun script peut le définirnom sur la liste CORS

Référence: RFC 9110 §14.2

Redirect-Refun script peut le définir

Référence: RFC 4437

Refererun script ne peut pas le définir

Référence: RFC 9110 §10.1.3

Referrer-Policyun script peut le définir

Référence: Referrer Policy

The header name does not share the HTTP Referer header's misspelling.

Refreshun script peut le définir

Référence: HTML

Replay-Nonceun script peut le définir

Référence: RFC 8555 §6.5.1

Repr-Digestun script peut le définirDictionary

Référence: RFC 9530 §3

Retry-Afterun script peut le définir

Référence: RFC 9110 §10.2.3

Schedule-Replyun script peut le définir

Référence: RFC 6638

Schedule-Tagun script peut le définir

Référence: RFC 6338

Sec-Fetch-Destfermé par préfixeItem

Référence: w3.org

Sec-Fetch-Modefermé par préfixeItem

Référence: w3.org

Sec-Fetch-Sitefermé par préfixeItem

Référence: w3.org

Sec-Fetch-Userfermé par préfixeItem

Référence: w3.org

Sec-Purposefermé par préfixe

Référence: Fetch

Intended to replace the (not registered) Purpose and x-moz headers.

Sec-Token-Bindingfermé par préfixe

Référence: RFC 8473

Sec-WebSocket-Acceptfermé par préfixe

Référence: RFC 6455

Sec-WebSocket-Extensionsfermé par préfixe

Référence: RFC 6455

Sec-WebSocket-Keyfermé par préfixe

Référence: RFC 6455

Sec-WebSocket-Protocolfermé par préfixe

Référence: RFC 6455

Sec-WebSocket-Versionfermé par préfixe

Référence: RFC 6455

Serverun script peut le définir

Référence: RFC 9110 §10.2.4

Server-Timingun script peut le définir

Référence: Server Timing

Set-Cookieun script ne peut pas le définirun script ne peut pas le lire

Référence: RFC-ietf-httpbis-rfc6265bis-22, Section 5.8.1

Set-Txnun script peut le définir

Référence: RFC 9967 §3

Signatureun script peut le définirDictionary

Référence: RFC 9421 §4.2

Signature-Inputun script peut le définirDictionary

Référence: RFC 9421 §4.1

SLUGun script peut le définir

Référence: RFC 5023

SoapActionun script peut le définir

Référence: Simple Object Access Protocol (SOAP) 1.1

Status-URIun script peut le définir

Référence: RFC 2518

Strict-Transport-Securityun script peut le définir

Référence: RFC 6797

Sunsetun script peut le définir

Référence: RFC 8594

TCNun script peut le définir

Référence: RFC 2295

TEun script ne peut pas le définir

Référence: RFC 9110 §10.1.4

Timeoutun script peut le définir

Référence: RFC 4918

Topicun script peut le définir

Référence: RFC 8030 §5.4

Traceparentun script peut le définir

Référence: Trace Context

Tracestateun script peut le définir

Référence: Trace Context

Trailerun script ne peut pas le définir

Référence: RFC 9110 §6.6.2

Transfer-Encodingun script ne peut pas le définir

Référence: RFC 9112 §6.1

TTLun script peut le définir

Référence: RFC 8030 §5.2

Unencoded-Digestun script peut le définirDictionary

Référence: RFC-ietf-httpbis-unencoded-digest-05, Section 3

Upgradeun script ne peut pas le définir

Référence: RFC 9110 §7.8

Urgencyun script peut le définir

Référence: RFC 8030 §5.3

Use-As-Dictionaryun script peut le définirDictionary

Référence: RFC 9842 §2.1

User-Agentun script peut le définir

Référence: RFC 9110 §10.1.5

Variant-Varyun script peut le définir

Référence: RFC 2295

Varyun script peut le définir

Référence: RFC 9110 §12.5.5

Viaun script ne peut pas le définir

Référence: RFC 9110 §7.6.3

Want-Content-Digestun script peut le définirDictionary

Référence: RFC 9530 §4

Want-Repr-Digestun script peut le définirDictionary

Référence: RFC 9530 §4

Want-Unencoded-Digestun script peut le définirDictionary

Référence: RFC-ietf-httpbis-unencoded-digest-05, Section 4

WWW-Authenticateun script peut le définir

Référence: RFC 9110 §11.6.1

X-Content-Type-Optionsun script peut le définir

Référence: Fetch

X-Frame-Optionsun script peut le définir

Référence: HTML

Provisoires

Enregistrés, mais l’entrée n’est pas encore stabilisée et peut changer ou disparaître.

Activate-Storage-Accessun script peut le définirItem

Référence: privacycg.github.io

AMP-Cache-Transformun script peut le définir

Référence: AMP-Cache-Transform HTTP request header

CMCD-Objectun script peut le définir

Référence: CTA, CTA-5004 Common Media Client Data

CMCD-Requestun script peut le définir

Référence: CTA, CTA-5004 Common Media Client Data

CMCD-Sessionun script peut le définir

Référence: CTA, CTA-5004 Common Media Client Data

CMCD-Statusun script peut le définir

Référence: CTA, CTA-5004 Common Media Client Data

CMSD-Dynamicun script peut le définir

Référence: CTA, CTA-5006 Common Media Server Data (CMSD)

CMSD-Staticun script peut le définir

Référence: CTA, CTA-5006 Common Media Server Data (CMSD)

Configuration-Contextun script peut le définir

Référence: OSLC Configuration Management Version 1.0. Part 3

CTA-Common-Access-Tokenun script peut le définir

Référence: CTA, Chris_Lemmons

EDIINT-Featuresun script peut le définir

Référence: RFC 6017

Isolationun script peut le définir

Référence: OData Version 4.01 Part 1, OASIS, Chet_Ensign

Permissions-Policyun script peut le définir

Référence: Permissions Policy

Repeatability-Client-IDun script peut le définir

Référence: Repeatable Requests Version 1.0, OASIS, Chet_Ensign

Repeatability-First-Sentun script peut le définir

Référence: Repeatable Requests Version 1.0, OASIS, Chet_Ensign

Repeatability-Request-IDun script peut le définir

Référence: Repeatable Requests Version 1.0, OASIS, Chet_Ensign

Repeatability-Resultun script peut le définir

Référence: Repeatable Requests Version 1.0, OASIS, Chet_Ensign

Reporting-Endpointsun script peut le définir

Référence: Reporting API

Sec-Fetch-Storage-Accessfermé par préfixeToken

Référence: privacycg.github.io

Sec-GPCfermé par préfixe

Référence: Global Privacy Control (GPC)

Surrogate-Capabilityun script peut le définir

Référence: Edge Architecture Specification

Surrogate-Controlun script peut le définir

Référence: Edge Architecture Specification

Timing-Allow-Originun script peut le définir

Référence: Resource Timing Level 1

Déconseillés

Toujours enregistrés, et l’on vous demande de ne pas les employer.

Accept-Charsetun script ne peut pas le définir

Référence: RFC 9110 §12.5.2

C-PEP-Infoun script peut le définir

Référence: PEP - an Extension Mechanism for HTTP

[Status change of HTTP experiments to Historic]

Content-IDun script peut le définir

Référence: The HTTP Distribution and Replication Protocol

Differential-IDun script peut le définir

Référence: The HTTP Distribution and Replication Protocol

Expect-CTun script peut le définir

Référence: RFC 9163

Obsoleted by [IESG] [HTTPBIS]

Pragmaun script peut le définir

Référence: RFC 9111 §5.4

Protocol-Infoun script peut le définir

Référence: White Paper

Protocol-Queryun script peut le définir

Référence: White Paper

Remplacés

Remplacés. Ils figurent ici pour qu’on puisse comprendre du trafic ancien, pas pour en produire du nouveau.

Access-Controlun script peut le définir

Référence: Access Control for Cross-site Requests

C-Extun script peut le définir

Référence: RFC 2774

[Status change of HTTP experiments to Historic]

C-Manun script peut le définir

Référence: RFC 2774

[Status change of HTTP experiments to Historic]

C-Optun script peut le définir

Référence: RFC 2774

[Status change of HTTP experiments to Historic]

C-PEPun script peut le définir

Référence: PEP - an Extension Mechanism for HTTP

[Status change of HTTP experiments to Historic]

Content-Baseun script peut le définir

Référence: RFC 2068

Obsoleted by [RFC 2616: Hypertext Transfer Protocol -- HTTP/1.1]

Content-MD5un script peut le définir

Référence: RFC 2616 §14.15

Obsoleted by [RFC 7231, Appendix B: Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content]

Content-Script-Typeun script peut le définir

Référence: HTML 4.01 Specification

Content-Style-Typeun script peut le définir

Référence: HTML 4.01 Specification

Content-Versionun script peut le définir

Référence: RFC 2068

Cookie2un script ne peut pas le définir

Référence: RFC 2965

Obsoleted by [RFC 6265: HTTP State Management Mechanism]

Default-Styleun script peut le définir

Référence: HTML 4.01 Specification

Derived-Fromun script peut le définir

Référence: RFC 2068

Digestun script peut le définir

Référence: RFC 3230

Obsoleted by [RFC 9530, Section 1.3: Digest Fields]

Extun script peut le définir

Référence: RFC 2774

[Status change of HTTP experiments to Historic]

GetProfileun script peut le définir

Référence: Implementation of OPS Over HTTP

HTTP2-Settingsun script peut le définir

Référence: RFC 7540 §3.2.1

Obsolete; see Section 11.1 of [RFC9113]

Manun script peut le définir

Référence: RFC 2774

[Status change of HTTP experiments to Historic]

Method-Checkun script peut le définir

Référence: Access Control for Cross-site Requests

Method-Check-Expiresun script peut le définir

Référence: Access Control for Cross-site Requests

Optun script peut le définir

Référence: RFC 2774

[Status change of HTTP experiments to Historic]

P3Pun script peut le définir

Référence: The Platform for Privacy Preferences 1.0 (P3P1.0) Specification

PEPun script peut le définir

Référence: PEP - an Extension Mechanism for HTTP

PEP-Infoun script peut le définir

Référence: PEP - an Extension Mechanism for HTTP

PICS-Labelun script peut le définir

Référence: PICS Label Distribution Label Syntax and Communication Protocols

ProfileObjectun script peut le définir

Référence: Implementation of OPS Over HTTP

Protocolun script peut le définir

Référence: PICS Label Distribution Label Syntax and Communication Protocols

Protocol-Requestun script peut le définir

Référence: PICS Label Distribution Label Syntax and Communication Protocols

Proxy-Featuresfermé par préfixe

Référence: Notification for Proxy Caches

Proxy-Instructionfermé par préfixe

Référence: Notification for Proxy Caches

Publicun script peut le définir

Référence: RFC 2068

Referer-Rootun script peut le définir

Référence: Access Control for Cross-site Requests

Safeun script peut le définir

Référence: RFC 2310

[Status change of HTTP experiments to Historic]

Security-Schemeun script peut le définir

Référence: RFC 2660

[Status change of HTTP experiments to Historic]

Set-Cookie2un script peut le définirun script ne peut pas le lire

Référence: RFC 2965

Obsoleted by [RFC 6265: HTTP State Management Mechanism]

SetProfileun script peut le définir

Référence: Implementation of OPS Over HTTP

URIun script peut le définir

Référence: RFC 2068

Want-Digestun script peut le définir

Référence: RFC 3230

Obsoleted by [RFC 9530, Section 1.3: Digest Fields]

Warningun script peut le définir

Référence: RFC 9111 §5.5

Lu dans le registre de l’IANA à la date indiquée. Le registre bouge sans cesse ; un tableau qui ne dit pas quand il a été relevé prétend silencieusement être à jour. 2026-08-02

Aussi disponible en : English · Español · Português · العربية

Liste des en-têtes HTTP

Les 257 champs enregistrés, chacun avec le statut que lui donne le registre et avec la seule chose que le registre ne consigne pas : si le navigateur laisse un script le définir.

Qu’est-ce que la liste des en-têtes HTTP ?

Chaque requête et chaque réponse HTTP transportent des champs d’en-tête — Content-Type, Cache-Control, Authorization et les autres — et savoir quels noms existent vraiment n’est pas affaire d’opinion. L’IANA tient le registre des noms de champ HTTP, et cette page est ce registre : 257 champs, chacun avec le statut que l’IANA lui a donné et la spécification dont il vient.

Presque toutes les listes publiées d’en-têtes HTTP sont rangées en en-têtes de requête et en-têtes de réponse. Il vaut la peine de savoir que le registre n’a pas cette colonne. Ses cinq champs sont le nom, le statut, le type structuré, la référence et un commentaire libre — rien sur le sens de circulation. Et beaucoup de champs voyagent dans les deux sens, si bien que la séparation qu’on voit ailleurs est le jugement d’un rédacteur présenté comme un fait.

Ce que le registre consigne bel et bien, c’est le statut, et il y fait une distinction que les tableaux recopiés écrasent. 187 champs sont permanents, 23 provisoires et encore instables, 8 déconseillés et 39 remplacés — conservés pour qu’on puisse lire du trafic ancien, non pour que le nouveau s’en serve. Près d’un cinquième du registre est quelque chose que vous ne devriez pas envoyer.

Comment s’en servir

  1. Cherchez par nom, par référence ou par commentaire. Une seule case couvre les trois, et les résultats sont classés plutôt que simplement filtrés : le nom exact arrive en tête même lorsqu’il serait alphabétiquement dernier, si bien que chercher range donne Range et non Accept-Ranges.
  2. Lisez l’étiquette à côté de chaque nom. Elle dit si le navigateur laisse un script poser cet en-tête sur une requête, et ceux qu’il refuse portent la mention de la règle qui les refuse.
  3. Regardez le titre de statut au-dessus du groupe. Les champs sont regroupés selon ce que l’IANA en dit : un nom déconseillé ou remplacé ne se retrouve donc jamais discrètement à côté d’un nom courant.

La colonne manquante, et celle qui répond vraiment

La question avec laquelle on arrive n’est pas de savoir si un en-tête est de requête ou de réponse. C’est pourquoi le définir depuis JavaScript ne fait rien, et sans le moindre avertissement. Cette réponse est dans une autre spécification : la norme Fetch définit ce qu’elle appelle un en-tête de requête interdit, et le navigateur écarte toute tentative de le poser afin de garder la main sur ce qu’il envoie.

Ce n’est pas une liste. Ce sont 21 noms — Cookie, Host, Origin, Referer, Connection et compagnie — plus deux préfixes : proxy- et sec-. La moitié des préfixes est la plus intéressante, car elle est sans borne. Aucun en-tête dont le nom commence par Sec- ne pourra jamais être posé par le code de la page, y compris ceux que personne n’a encore inventés, et la norme dit pourquoi : l’espace de noms est réservé pour qu’on puisse frapper des en-têtes à l’abri des API qui laissent les développeurs fixer des en-têtes. C’est exactement ce qui donne sa valeur à un en-tête comme Sec-Fetch-Site : une page ne peut pas le falsifier.

Sur les 257 champs enregistrés, 218 sont de ceux qu’un script peut poser, 20 sont refusés par leur nom et 19 par leur préfixe. Un nom de la liste des interdits ne figure même pas au registre : DNT. Le navigateur refuse qu’un script pose un en-tête que l’IANA n’a jamais contenu.

Il existe aussi une règle plus modeste dans l’autre sens. Un script ne peut jamais lire Set-Cookie ni Set-Cookie2 sur une réponse, quels que soient les en-têtes CORS — c’est pourquoi un cookie posé par une API d’une autre origine reste invisible au code qui l’a appelée.

Limites honnêtes, et trois choses à savoir

Ceci est un instantané. Le registre gagne des entrées, et la date à laquelle il a été relevé est imprimée sous la liste plutôt que laissée à votre imagination. Un tableau qui ne dit pas quand il a été pris prétend silencieusement rester à jour pour toujours.

Le registre écrit par ailleurs quatre de ses propres statuts avec une majuscule, et ces quatre-là sont des champs Sec-Fetch-. Un filtre à correspondance exacte sur permanent renvoie 183 au lieu de 187 et laisse tomber précisément les en-têtes de sécurité modernes du fetch metadata. C’est un vrai piège pour qui lit le CSV lui-même, et c’est pourquoi cette page normalise l’orthographe.

Deux entrées ne sont pas des en-têtes. Close et un astérisque tout seul sont enregistrés avec le commentaire reserved, c’est-à-dire enregistrés pour que personne ne les enregistre. Leur statut est permanent : le statut seul ne vous dira donc pas qu’ils sont inutilisables — et oui, un astérisque est bel et bien un nom de champ HTTP enregistré.

Certains noms attendus sont absents. X-Forwarded-For, X-Requested-With, X-Powered-By et X-XSS-Protection s’emploient partout et ne sont enregistrés nulle part ; le parent enregistré du premier est Forwarded. Le registre compte exactement deux champs X-, dont X-Frame-Options — inscrit comme permanent et non comme remplacé, ce qui contredit la croyance répandue que frame-ancestors de CSP l’aurait mis à la retraite.

Un dernier avertissement sur l’étiquette de la liste CORS. Un en-tête de cette liste n’évite le préliminaire que pour certaines valeurs : Content-Type y a droit pour trois types de médias, si bien que application/json déclenche un préliminaire là où text/plain n’en déclenche pas, et toute valeur de la liste est plafonnée à 128 octets. L’appartenance à la liste est une propriété du nom et de la valeur ensemble : prenez donc cette étiquette pour un indice, non pour un verdict.

Pourquoi est-ce gratuit ?

Parce que cela ne coûte rien à faire tourner. La liste fait partie de la page, la recherche se passe dans votre navigateur, et rien n’est envoyé ni journalisé.

Les données viennent du fichier lisible par machine de l’IANA elle-même et non d’une autre liste, les règles concernant les scripts viennent de la norme Fetch, et le script qui lit les deux est conservé à côté des données qu’il produit, pour que les chiffres de cette page puissent être reproduits.