Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
OPTIONS request method
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since Juli 2015.
DieOPTIONS HTTP-Methode fordert zulässige Kommunikationsoptionen für eine bestimmte URL oder einen Server an. Diese kann verwendet werden, um die erlaubten HTTP-Methoden für eine Anfrage zu testen oder um festzustellen, ob eine Anfrage erfolgreich wäre, wenn eine CORS-Preflight-Anfrage gestellt wird. Ein Client kann mit dieser Methode eine URL angeben oder ein Sternchen (*), um den gesamten Server zu adressieren.
| Anfrage hat einen Body | Kann* |
|---|---|
| Erfolgreiche Antwort hat einen Body | Kann |
| Sicher | Ja |
| Idempotent | Ja |
| Cachefähig | Nein |
| In HTML-Formularen erlaubt | Nein |
* Obwohl eineOPTIONS Nachricht mit einem Anfrage-Body technisch erlaubt ist, hat sie keine definierten Semantiken. Sie können einen Body in einerOPTIONS Nachricht einschließen, solange Sie einen gültigenContent-Type-Header bereitstellen und wenn Sie wissen, dass der Server ihn erwartet, da das Verhalten implementierungsspezifisch ist.
In diesem Artikel
Syntax
OPTIONS *|<request-target>["?"<query>] HTTP/1.1Das Anforderungsziel kann entweder in 'Asterisk-Form'* sein, was den gesamten Server anzeigt, oder ein Anforderungsziel, wie es bei anderen Methoden üblich ist:
*Zeigt an, dass der Client
OPTIONSfür den gesamten Server anfordern möchte, im Gegensatz zu einer bestimmten benannten Ressource dieses Servers.<request-target>Identifiziert das Ziel der Anforderung in Kombination mit den Informationen, die im
HostHeader bereitgestellt werden. Dies ist ein absoluter Pfad (z.B./path/to/file.html) in Anforderungen an einen Ursprungserver und eine absolute URL in Anforderungen an Proxys (z.B.http://www.example.com/path/to/file.html).<query>OptionalEin optionaler Abfragebestandteil, der durch ein Fragezeichen
?eingeleitet wird. Wird oft verwendet, um identifizierende Informationen in Form vonkey=valuePaaren zu tragen.
Beispiele
>Identifizierung erlaubter Anfragemethoden
Um herauszufinden, welche Anfragemethoden ein Server unterstützt, kann man das Kommandozeilenprogrammcurl verwenden, um eineOPTIONS-Anfrage zu stellen:
curl -X OPTIONS https://example.org -iDies erzeugt die folgende HTTP-Anfrage:
OPTIONS / HTTP/2Host: example.orgUser-Agent: curl/8.7.1Accept: */*Die Antwort enthält einenAllow-Header, der die erlaubten Methoden enthält:
HTTP/1.1 204 No ContentAllow: OPTIONS, GET, HEAD, POSTCache-Control: max-age=604800Date: Thu, 13 Oct 2016 11:45:00 GMTServer: EOS (lax004/2813)Preflight-Anfragen in CORS
InCORS wird mit der MethodeOPTIONS einePreflight-Anfrage gesendet, damit der Server antworten kann, ob es akzeptabel ist, die Anfrage zu senden. In diesem Beispiel werden wir um Erlaubnis für diese Parameter bitten:
- Der
Access-Control-Request-MethodHeader, der in der Preflight-Anfrage gesendet wird, teilt dem Server mit, dass die tatsächliche Anfrage, wenn sie gesendet wird, einePOST-Anfragemethode haben wird. - Der
Access-Control-Request-HeadersHeader teilt dem Server mit, dass die tatsächliche Anfrage die HeaderX-PINGOTHERundContent-Typehaben wird.
OPTIONS /resources/post-here/ HTTP/1.1Host: bar.exampleAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: en-us,en;q=0.5Accept-Encoding: gzip,deflateConnection: keep-aliveOrigin: https://foo.exampleAccess-Control-Request-Method: POSTAccess-Control-Request-Headers: content-type,x-pingotherDer Server kann nun antworten, ob er eine Anfrage unter diesen Umständen akzeptiert. In diesem Beispiel sagt die Serverantwort:
Access-Control-Allow-OriginDer Ursprung
https://foo.exampledarf die URLbar.example/resources/post-here/über Folgendes anfragen:Access-Control-Allow-MethodsPOST,GETundOPTIONSsind erlaubte Methoden für die URL. (Dieser Header ist demAllowAntwortheader ähnlich, wird aber nur fürCORS verwendet.)Access-Control-Allow-HeadersX-PINGOTHERundContent-Typesind erlaubte Anfrage-Header für die URL.Access-Control-Max-AgeDie obigen Berechtigungen können für 86.400 Sekunden (1 Tag) zwischengespeichert werden.
HTTP/1.1 200 OKDate: Mon, 01 Dec 2008 01:15:39 GMTServer: Apache/2.0.61 (Unix)Access-Control-Allow-Origin: https://foo.exampleAccess-Control-Allow-Methods: POST, GET, OPTIONSAccess-Control-Allow-Headers: X-PINGOTHER, Content-TypeAccess-Control-Max-Age: 86400Vary: Accept-Encoding, OriginKeep-Alive: timeout=2, max=100Connection: Keep-AliveHinweis:Sowohl200 OK als auch204 No Content sinderlaubte Statuscodes, aber einige Browser glauben fälschlicherweise, dass204 No Content auf die Ressource zutrifft und senden keine nachfolgende Anfrage, um sie abzurufen.
Spezifikationen
| Specification |
|---|
| HTTP Semantics> # OPTIONS> |