Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

Méthode de requête OPTIONS

Baseline Widely available

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis ⁨juillet 2015⁩.

La méthode HTTP OPTIONS est utilisée pour décrire les options de communication pour la ressource ciblée. Le client peut renseigner une URL spécifique pour la méthode OPTIONS, ou une astérisque (*) pour interroger le serveur dans sa globalité.

La requête a un corps Non
La réponse de succès a un corps Oui
Sûre Oui
Idempotente Oui
Mis en cache Non
Autorisée dans les formulaires HTML Non

* Bien qu'un message OPTIONS avec un corps de requête soit techniquement autorisé, il n'a pas de sémantique définie. Vous pouvez inclure un corps dans un message OPTIONS tant que vous fournissez un en-tête Content-Type valide, et uniquement si vous savez que le serveur l'attend, car le comportement dépend de l'implémentation.

Syntaxe

http
OPTIONS *|<request-target>["?"<query>] HTTP/1.1

La cible de la requête peut être soit sous « la forme d'une astérisque » * indiquant le serveur dans sa globalité, soit une cible de requête comme pour les autres méthodes :

*

Indique que le client souhaite demander OPTIONS pour le serveur dans sa globalité, par opposition à une ressource nommée spécifique de ce serveur.

<request-target>

Identifie la ressource cible de la requête lorsqu'elle est combinée avec l'information fournie dans l'en-tête Host. Il s'agit d'un chemin absolu (par exemple /chemin/vers/fichier.html) dans les requêtes vers un serveur d'origine, et d'une URL absolue dans les requêtes vers les serveurs mandataires (proxies) (par exemple http://www.exemple.fr/chemin/vers/fichier.html).

<query> Facultatif

Un fragment de requête optionnel précédé d'un point d'interrogation ?. Souvent utilisé pour transmettre des informations sous la forme de paires clé=valeur.

Exemples

Identifier les méthodes HTTP autorisées

Pour connaître les méthodes de requête supportées par un serveur, vous pouvez utiliser le programme en ligne de commande curl pour envoyer une requête OPTIONS :

bash
curl -X OPTIONS https://exemple.org -i

Cela génère la requête HTTP suivante :

http
OPTIONS / HTTP/2
Host: exemple.org
User-Agent: curl/8.7.1
Accept: */*

La réponse contient un en-tête Allow qui liste les méthodes autorisées :

http
HTTP/1.1 204 No Content
Allow: OPTIONS, GET, HEAD, POST
Cache-Control: max-age=604800
Date: Thu, 13 Oct 2016 11:45:00 GMT
Server: EOS (lax004/2813)

Requêtes de pré-vérification en CORS

En CORS, une requête de pré-vérification est envoyée avec la méthode OPTIONS afin que le serveur indique si la requête est acceptable avec les paramètres spécifiés. Dans cet exemple, nous demandons l'autorisation pour ces paramètres :

  • L'en-tête Access-Control-Request-Method envoyé dans la requête de pré-vérification indique au serveur que lorsque la véritable requête sera envoyée, elle utilisera la méthode POST.
  • L'en-tête Access-Control-Request-Headers indique au serveur que lorsque la véritable requête sera envoyée, elle comportera les en-têtes X-PINGOTHER et Content-Type.
http
OPTIONS /resources/post-here/ HTTP/1.1
Host: toto.exemple
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Connection: keep-alive
Origin: https://tata.exemple
Access-Control-Request-Method: POST
Access-Control-Request-Headers: content-type,x-pingother

Le serveur peut alors indiquer s'il accepte une requête dans ces conditions. Dans cet exemple, la réponse du serveur précise :

Access-Control-Allow-Origin

L'origine https://tata.exemple est autorisée à demander l'URL toto.exemple/resources/post-here/ selon les paramètres suivants :

Access-Control-Allow-Methods

POST, GET et OPTIONS sont des méthodes autorisées pour l'URL. (Cet en-tête est similaire à l'en-tête de réponse Allow, mais utilisé uniquement dans le contexte CORS.)

Access-Control-Allow-Headers

X-PINGOTHER et Content-Type sont des en-têtes de requête autorisés pour l'URL.

Access-Control-Max-Age

Les autorisations ci-dessus peuvent être mises en cache pendant 86 400 secondes (1 jour).

http
HTTP/1.1 200 OK
Date: Mon, 01 Dec 2008 01:15:39 GMT
Server: Apache/2.0.61 (Unix)
Access-Control-Allow-Origin: https://tata.exemple
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Headers: X-PINGOTHER, Content-Type
Access-Control-Max-Age: 86400
Vary: Accept-Encoding, Origin
Keep-Alive: timeout=2, max=100
Connection: Keep-Alive

Note : Les codes d'état 200 OK et 204 No Content sont tous deux autorisés (angl.), mais certains navigateurs considèrent à tort que 204 No Content s'applique à la ressource et n'envoient pas de requête suivante pour la récupérer.

Spécifications

Specification
HTTP Semantics
# OPTIONS

Compatibilité des navigateurs

Voir aussi