edit 2018-09-13 : Einige Präzisionen zu dieser Anfrage vor dem Flug hinzugefügt und wie sie am Ende dieser Antwort vermieden werden kann.
OPTIONS
Anfragen sind das, was wir pre-flight
Anfragen nennen Cross-origin resource sharing (CORS)
.
Sie sind erforderlich, wenn Sie in bestimmten Situationen Anfragen unterschiedlicher Herkunft stellen.
Diese Anforderung vor dem Flug wird von einigen Browsern aus Sicherheitsgründen gestellt, um sicherzustellen, dass der Server der ausgeführten Anforderung vertraut. Dies bedeutet, dass der Server versteht, dass die Methode, der Ursprung und die Header, die auf die Anforderung gesendet werden, sicher sind.
Ihr Server sollte diese Anforderungen nicht ignorieren, sondern verarbeiten, wenn Sie versuchen, Ursprungsübergreifende Anforderungen auszuführen.
Eine gute Ressource finden Sie hier http://enable-cors.org/
Eine Möglichkeit, dies zu handhaben, besteht darin, sicherzustellen, dass OPTIONS
der Server für jeden Pfad mit Methode eine Antwort mit diesem Header sendet
Access-Control-Allow-Origin: *
Dadurch wird dem Browser mitgeteilt, dass der Server bereit ist, Anfragen von jedem Ursprung zu beantworten.
Weitere Informationen zum Hinzufügen von CORS-Unterstützung zu Ihrem Server finden Sie im folgenden Flussdiagramm
http://www.html5rocks.com/static/images/cors_server_flowchart.png
bearbeiten 2018-09-13
Die CORS- OPTIONS
Anforderung wird nur in einigen Fällen ausgelöst, wie in den MDN-Dokumenten erläutert :
Einige Anfragen lösen keinen CORS-Preflight aus. Diese werden in diesem Artikel als "einfache Anforderungen" bezeichnet, obwohl die Fetch-Spezifikation (die CORS definiert) diesen Begriff nicht verwendet. Eine Anfrage, die keinen CORS-Preflight auslöst - eine sogenannte „einfache Anfrage“ - erfüllt alle folgenden Bedingungen:
Die einzigen zulässigen Methoden sind:
Abgesehen von den vom Benutzeragenten automatisch festgelegten Headern (z. B. Verbindung, Benutzeragent oder einem der anderen Header mit Namen, die in der Abrufspezifikation als „verbotener Headername“ definiert sind), sind dies die einzigen zulässigen Header manuell festgelegt sind diejenigen, die in der Fetch-Spezifikation als "CORS-sicherer Listen-Anforderungsheader" definiert sind:
- Akzeptieren
- Akzeptiere-Sprache
- Inhaltssprache
- Inhaltstyp (beachten Sie jedoch die zusätzlichen Anforderungen unten)
- DPR
- Downlink
- Daten speichern
- Ansichtsfenster-Breite
- Breite
Die einzigen zulässigen Werte für den Content-Type-Header sind:
- application / x-www-form-urlencoded
- mehrteilige / Formulardaten
- Text / Klartext
Für kein in der Anforderung verwendetes XMLHttpRequestUpload-Objekt sind Ereignis-Listener registriert. Auf diese wird mit der Eigenschaft XMLHttpRequest.upload zugegriffen.
In der Anforderung wird kein ReadableStream-Objekt verwendet.