RequestInit
Das RequestInit Wörterbuch der Fetch API repräsentiert die Menge an Optionen, mit denen eine Fetch-Anfrage konfiguriert werden kann.
Sie können ein RequestInit Objekt in den Request() Konstruktor übergeben oder direkt in den Aufruf der fetch() Funktion einfügen.
Sie können auch eine Request mit einem RequestInit konstruieren und die Request in einem fetch() Aufruf zusammen mit einem weiteren RequestInit übergeben. Wenn Sie dies tun und dieselbe Option an beiden Stellen festgelegt ist, wird der Wert verwendet, der direkt in fetch() übergeben wurde.
Instanz-Eigenschaften
attributionReportingOptional Veraltet-
Gibt an, dass Sie möchten, dass die Antwort der Anfrage in der Lage ist, eine JavaScript-basierte Attributionsquelle oder einen Attributionstrigger zu registrieren.
attributionReportingist ein Objekt, das die folgenden Eigenschaften enthält:eventSourceEligible-
Ein boolescher Wert. Wenn auf
truegesetzt, ist die Antwort der Anfrage berechtigt, eine Attributionsquelle zu registrieren. Wenn auffalsegesetzt, ist dies nicht der Fall. triggerEligible-
Ein boolescher Wert. Wenn auf
truegesetzt, ist die Antwort der Anfrage berechtigt, einen Attributionstrigger zu registrieren. Wenn auffalsegesetzt, ist dies nicht der Fall.
Siehe die Attribution Reporting API für weitere Details.
bodyOptional-
Der Anfrage-Body enthält Inhalte, die an den Server gesendet werden sollen, zum Beispiel in einer
POSToderPUTAnfrage. Er wird als Instanz eines der folgenden Typen angegeben:Siehe Setting a body für weitere Details.
browsingTopicsOptional Veraltet-
Ein boolescher Wert, der angibt, dass die ausgewählten Themen des aktuellen Benutzers in einem
Sec-Browsing-TopicsHeader mit der zugehörigen Anfrage gesendet werden sollen.Siehe Using the Topics API für weitere Details.
cacheOptional-
Der Cache-Modus, den Sie für die Anfrage verwenden möchten. Dies kann einer der folgenden Werte sein:
default-
Der Browser sucht im HTTP-Cache nach einer Antwort, die zur Anfrage passt.
- Wenn es eine Übereinstimmung gibt und sie frisch ist, wird sie aus dem Cache zurückgegeben.
- Wenn es eine Übereinstimmung gibt, diese jedoch abgelaufen ist, stellt der Browser eine bedingte Anfrage an den entfernten Server. Wenn der Server anzeigt, dass die Ressource nicht geändert wurde, wird sie aus dem Cache zurückgegeben. Andernfalls wird die Ressource vom Server heruntergeladen und der Cache wird aktualisiert.
- Wenn es keine Übereinstimmung gibt, stellt der Browser eine normale Anfrage und aktualisiert den Cache mit der heruntergeladenen Ressource.
no-store-
Der Browser ruft die Ressource vom entfernten Server ab, ohne zuerst im Cache nachzusehen, und wird den Cache nicht mit der heruntergeladenen Ressource aktualisieren.
reload-
Der Browser ruft die Ressource vom entfernten Server ab, ohne zuerst im Cache nachzusehen, aber wird dann den Cache mit der heruntergeladenen Ressource aktualisieren.
no-cache-
Der Browser sucht im HTTP-Cache nach einer Antwort, die zur Anfrage passt.
- Wenn es eine Übereinstimmung gibt, frisch oder abgelaufen, stellt der Browser eine bedingte Anfrage an den entfernten Server. Wenn der Server anzeigt, dass die Ressource nicht geändert wurde, wird sie aus dem Cache zurückgegeben. Andernfalls wird die Ressource vom Server heruntergeladen und der Cache wird aktualisiert.
- Wenn es keine Übereinstimmung gibt, stellt der Browser eine normale Anfrage und aktualisiert den Cache mit der heruntergeladenen Ressource.
force-cache-
Der Browser sucht im HTTP-Cache nach einer Antwort, die zur Anfrage passt.
- Wenn es eine Übereinstimmung gibt, frisch oder abgelaufen, wird sie aus dem Cache zurückgegeben.
- Wenn es keine Übereinstimmung gibt, stellt der Browser eine normale Anfrage und aktualisiert den Cache mit der heruntergeladenen Ressource.
only-if-cached-
Der Browser sucht im HTTP-Cache nach einer Antwort, die zur Anfrage passt. Experimentell
- Wenn es eine Übereinstimmung gibt, frisch oder abgelaufen, wird sie aus dem Cache zurückgegeben.
- Wenn es keine Übereinstimmung gibt, wird ein Netzwerkfehler zurückgegeben.
Der
"only-if-cached"Modus kann nur verwendet werden, wenn dermodeder Anfrage"same-origin"ist. Zwischengespeicherte Weiterleitungen werden gefolgt, wenn dieredirectEigenschaft der Anfrage"follow"ist und die Weiterleitungen den"same-origin"Modus nicht verletzen. credentialsOptional-
Kontrolliert, ob der Browser Anmeldedaten mit der Anfrage sendet oder nicht und ob
Set-CookieAntwortheader respektiert werden. Anmeldedaten sind Cookies, TLS Client-Zertifikate oder Authentifizierungsheader, die einen Benutzernamen und ein Passwort enthalten. Diese Option kann einer der folgenden Werte sein:omit-
Niemals Anmeldedaten in der Anfrage senden oder in der Antwort einschließen.
same-origin-
Anmeldedaten nur für Anfragen gleicher Herkunft senden und einschließen.
include-
Anmeldedaten immer einschließen, auch für Anfragen unterschiedlicher Herkunft.
Das Einschließen von Anmeldedaten in Anfragen unterschiedlicher Herkunft kann eine Seite anfällig für CSRF Angriffe machen, weshalb der Server, selbst wenn
credentialsaufincludegesetzt ist, auch ihrer Einbeziehung zustimmen muss, indem es denAccess-Control-Allow-CredentialsHeader in seiner Antwort einfügt. Zusätzlich muss in diesem Fall der Server explizit den Ursprung des Clients imAccess-Control-Allow-OriginAntwortheader angeben (das heißt,*ist nicht erlaubt).Siehe Including credentials für weitere Details.
Standardmäßig
same-origin. duplexOptional Experimentell-
Steuerung des Duplex-Verhaltens der Anfrage. Wenn dies vorhanden ist, muss es den Wert
halfhaben, was bedeutet, dass der Browser die gesamte Anfrage senden muss, bevor er die Antwort verarbeitet.Diese Option muss vorhanden sein, wenn
bodyeinReadableStreamist. headersOptional-
Alle Header, die Sie der Anfrage hinzufügen möchten, enthalten innerhalb eines
HeadersObjekts oder eines Objektliterals, dessen Schlüssel die Header-Namen und dessen Werte die Header-Werte sind.Viele Header werden automatisch vom Browser gesetzt und können nicht durch ein Skript gesetzt werden: Diese werden als verbotene Anfrage-Header bezeichnet.
Wenn die
modeOption aufno-corsgesetzt ist, können Sie nur CORS-safe-list Request-Header setzen.Siehe Setting headers für weitere Details.
integrityOptional-
Enthält den Subresource-Integrität Wert der Anfrage.
Dies wird überprüft, wenn die Ressource abgerufen wird, genauso wie es der Fall wäre, wenn das
integrityAttribut auf einem<script>Element gesetzt ist. Der Browser berechnet den Hash der abgerufenen Ressource mit dem angegebenen Algorithmus, und wenn das Ergebnis nicht dem angegebenen Wert entspricht, weist der Browser die Fetch-Anfrage mit einem Netzwerkfehler zurück.Das Format dieser Option ist
<hash-algo>-<hash-source>wobei:<hash-algo>einer der folgenden Werte ist:sha256,sha384odersha512<hash-source>ist die Base64-Kodierung des Ergebnisses der Hash-Berechnung der Ressource mit dem angegebenen Hash-Algorithmus.
Standardmäßig ein leerer String.
keepaliveOptional-
Ein boolescher Wert. Wenn auf
truegesetzt, wird der Browser die zugehörige Anfrage nicht abbrechen, wenn die Seite, die sie initiiert hat, entladen wird, bevor die Anfrage abgeschlossen ist. Dies ermöglicht einefetch()Anfrage, Analytik am Ende einer Sitzung zu senden, selbst wenn der Benutzer die Seite verlässt oder schließt.Dies hat einige Vorteile gegenüber der Verwendung von
Navigator.sendBeacon()für denselben Zweck. Zum Beispiel können Sie andere HTTP-Methoden alsPOSTverwenden, Anfrageeigenschaften anpassen und auf die Serverantwort über die Erfüllung des FetchPromisezugreifen. Es steht auch in Service Workern zur Verfügung.Die Körpergröße für
keepaliveAnfragen ist auf 64 Kibibyte begrenzt.Standardmäßig
false. methodOptional-
Die Anfragemethode.
Standardmäßig
GET. modeOptional-
Legt das Cross-Origin-Verhalten für die Anfrage fest. Einer der folgenden Werte:
same-origin-
Verhindert Cross-Origin-Anfragen. Wenn eine
same-originAnfrage an einen anderen Ursprung gesendet wird, ist das Ergebnis ein Netzwerkfehler. cors-
Wenn die Anfrage eine Cross-Origin-Anfrage ist, verwendet sie den Cross-Origin Resource Sharing (CORS) Mechanismus. Nur CORS-safelisted response headers werden in der Antwort angezeigt.
no-cors-
Deaktiviert CORS für Cross-Origin-Anfragen. Diese Option hat folgende Einschränkungen:
- Die Methode darf nur eine der folgenden sein:
HEAD,GEToderPOST. - Die Header dürfen nur CORS-safe-list Request-Header sein, mit der zusätzlichen Einschränkung, dass der
RangeHeader ebenfalls nicht zulässig ist. Dies gilt auch für alle von Service Workern hinzugefügten Header. - Die Antwort ist opak, das bedeutet, dass ihre Header und ihr Body für JavaScript nicht verfügbar sind und ihr Statuscode immer
0ist.
Die Hauptanwendung für
no-corsist für einen Service Worker: Auch wenn die Antwort auf eineno-corsAnfrage nicht von JavaScript gelesen werden kann, kann sie von einem Service Worker zwischengespeichert und dann als Antwort auf eine abgefangene Fetch-Anfrage verwendet werden. Beachten Sie, dass Sie in dieser Situation nicht wissen, ob die Anfrage erfolgreich war oder nicht, so dass Sie eine Caching-Strategie verwenden sollten, die es ermöglicht, die zwischengespeicherte Antwort aus dem Netzwerk zu aktualisieren (wie Cache first with cache refresh). - Die Methode darf nur eine der folgenden sein:
-
Wird nur für HTML-Navigationen verwendet. Eine
navigateAnfrage wird nur beim Navigieren zwischen Dokumenten erstellt.
Siehe Making cross-origin requests für weitere Details.
Standardmäßig
cors. priorityOptional-
Gibt die Priorität der Fetch-Anfrage relativ zu anderen Anfragen des gleichen Typs an. Muss einer der folgenden sein:
high-
Eine Fetch-Anfrage mit hoher Priorität relativ zu anderen Anfragen des gleichen Typs.
low-
Eine Fetch-Anfrage mit niedriger Priorität relativ zu anderen Anfragen des gleichen Typs.
auto-
Keine Benutzerpräferenz für die Fetch-Priorität. Wird verwendet, wenn kein Wert gesetzt oder ein ungültiger Wert gesetzt ist.
Standardmäßig
auto. redirectOptional-
Bestimmt das Verhalten des Browsers, falls der Server mit einem Umleitungsstatus antwortet. Einer der folgenden Werte:
follow-
Umleitungen automatisch folgen.
error-
Das Promise mit einem Netzwerkfehler zurückweisen, wenn ein Umleitungsstatus zurückgegeben wird.
manual-
Eine Antwort zurückgeben, bei der fast alle Felder herausgefiltert sind, um einem Service Worker zu ermöglichen, die Antwort zu speichern und später erneut abzuspielen.
Standardmäßig
follow. referrerOptional-
Ein String, der den Wert angibt, der für den
RefererHeader der Anfrage verwendet werden soll. Einer der folgenden:- Eine relative oder absolute URL gleicher Herkunft
-
Den
RefererHeader auf den angegebenen Wert setzen. Relative URLs werden relativ zu der URL der Seite aufgelöst, die die Anfrage gestellt hat. - Ein leerer String
-
Den
RefererHeader weglassen. about:client-
Den
RefererHeader auf den Standardwert für den Kontext der Anfrage setzen (zum Beispiel die URL der Seite, die die Anfrage gestellt hat).
Standardmäßig
about:client. referrerPolicyOptional-
Ein String, der eine Richtlinie für den
RefererHeader festlegt. Die Syntax und Semantik dieser Option sind genau die gleichen wie für denReferrer-PolicyHeader. signalOptional-
Ein
AbortSignal. Wenn diese Option gesetzt ist, kann die Anfrage durch Aufruf vonabort()auf dem entsprechendenAbortControllerabgebrochen werden.
Beispiele
>Optionen in fetch() übergeben
In diesem Beispiel übergeben wir die Optionen method, body und headers direkt in den fetch() Methodenaufruf:
async function post() {
const response = await fetch("https://example.org/post", {
method: "POST",
body: JSON.stringify({ username: "example" }),
headers: {
"Content-Type": "application/json",
},
});
console.log(response.status);
}
Optionen in den Request() Konstruktor übergeben
In diesem Beispiel erstellen wir eine Request, wobei wir denselben Satz von Optionen in ihren Konstruktor übergeben und dann die Anfrage an fetch() übergeben:
async function post() {
const request = new Request("https://example.org/post", {
method: "POST",
body: JSON.stringify({ username: "example" }),
headers: {
"Content-Type": "application/json",
},
});
const response = await fetch(request);
console.log(response.status);
}
Optionen sowohl in Request() als auch fetch() übergeben
In diesem Beispiel erstellen wir eine Request, wobei wir die Optionen method, headers und body in ihren Konstruktor übergeben. Anschließend übergeben wir die Anfrage in fetch() zusammen mit den Optionen body und referrer:
async function post() {
const request = new Request("https://example.org/post", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({ username: "example1" }),
});
const response = await fetch(request, {
body: JSON.stringify({ username: "example2" }),
referrer: "",
});
console.log(response.status);
}
In diesem Fall wird die Anfrage mit den folgenden Optionen gesendet:
method: "POST"headers: {"Content-Type": "application/json"}body: '{"username":"example2"}'referrer: ""
Spezifikationen
| Specification |
|---|
| Fetch> # requestinit> |