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
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
OPTIONSpour 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 exemplehttp://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 pairesclé=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 :
curl -X OPTIONS https://exemple.org -i
Cela génère la requête HTTP suivante :
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/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-Methodenvoyé 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éthodePOST. - L'en-tête
Access-Control-Request-Headersindique au serveur que lorsque la véritable requête sera envoyée, elle comportera les en-têtesX-PINGOTHERetContent-Type.
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.exempleest autorisée à demander l'URLtoto.exemple/resources/post-here/selon les paramètres suivants : Access-Control-Allow-Methods-
POST,GETetOPTIONSsont des méthodes autorisées pour l'URL. (Cet en-tête est similaire à l'en-tête de réponseAllow, mais utilisé uniquement dans le contexte CORS.) Access-Control-Allow-Headers-
X-PINGOTHERetContent-Typesont 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/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
Chargement…