RequestInit
Das RequestInit Dictionary der Fetch API stellt die Optionen dar, die verwendet werden können, um eine fetch-Anfrage zu konfigurieren.
Sie können ein RequestInit-Objekt in den Request()-Konstruktor oder direkt in den fetch()-Funktionsaufruf übergeben.
Sie können auch einen Request mit einem RequestInit konstruieren und den Request zusammen mit einem weiteren RequestInit an einen fetch()-Aufruf übergeben. Wenn Sie dies tun und dieselbe Option an beiden Stellen festgelegt ist, wird der Wert verwendet, der direkt in fetch() übergeben wird.
Instanz-Eigenschaften
attributionReportingOptional Veraltet-
Gibt an, dass Sie möchten, dass die Antwort der Anfrage eine Javascript-basierte Attributionsquelle oder einen Attribution Trigger registrieren kann.
attributionReportingist ein Objekt mit den folgenden Eigenschaften:eventSourceEligible-
Ein Boolean. Wenn auf
truegesetzt, ist die Antwort der Anfrage berechtigt, eine Attributionsquelle zu registrieren. Wenn auffalsegesetzt, ist sie es nicht. triggerEligible-
Ein Boolean. Wenn auf
truegesetzt, ist die Antwort der Anfrage berechtigt, einen Attribution Trigger zu registrieren. Wenn auffalsegesetzt, ist sie es nicht.
Weitere Details finden Sie in der Attribution Reporting API.
bodyOptional-
Der Anfragetext enthält Inhalte, die an den Server gesendet werden sollen, z. B. in einer
POSToderPUTAnfrage. Er wird als Instanz eines der folgenden Typen angegeben:Weitere Details finden Sie unter Einen Body setzen.
browsingTopicsOptional Veraltet-
Ein Boolean, der angibt, dass die ausgewählten Themen für den aktuellen Benutzer in einem
Sec-Browsing-TopicsHeader mit der zugehörigen Anfrage gesendet werden sollen.Weitere Details finden Sie unter Using the Topics API.
cacheOptional-
Der Cache-Modus, den Sie für die Anfrage verwenden möchten. Dies kann einer der folgenden Werte sein:
default-
Der Browser sucht in seinem 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, die jedoch veraltet ist, wird der Browser eine bedingte Anfrage an den entfernten Server stellen. Wenn der Server angibt, dass sich die Ressource nicht geändert hat, 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 holt die Ressource vom entfernten Server, ohne zuerst im Cache nachzusehen, und wird den Cache nicht mit der heruntergeladenen Ressource aktualisieren.
reload-
Der Browser holt die Ressource vom entfernten Server, ohne zuerst im Cache nachzusehen, wird dann aber den Cache mit der heruntergeladenen Ressource aktualisieren.
no-cache-
Der Browser sucht in seinem HTTP-Cache nach einer Antwort, die zur Anfrage passt.
- Wenn es eine Übereinstimmung gibt, frisch oder veraltet, wird der Browser eine bedingte Anfrage an den entfernten Server stellen. Wenn der Server angibt, dass sich die Ressource nicht geändert hat, 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 in seinem HTTP-Cache nach einer Antwort, die zur Anfrage passt.
- Wenn es eine Übereinstimmung gibt, frisch oder veraltet, 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 in seinem HTTP-Cache nach einer Antwort, die zur Anfrage passt. Experimentell
- Wenn es eine Übereinstimmung gibt, frisch oder veraltet, wird sie aus dem Cache zurückgegeben.
- Wenn es keine Übereinstimmung gibt, wird ein Netzwerkfehler zurückgegeben.
Der Modus
"only-if-cached"kann nur verwendet werden, wenn dermodeder Anfrage"same-origin"ist. Zwischengespeicherte Umleitungen werden gefolgt, wenn dieredirect-Eigenschaft der Anfrage"follow"ist und die Umleitungen den"same-origin"-Modus nicht verletzen. credentialsOptional-
Steuerung, ob und wie der Browser Anmeldeinformationen mit der Anfrage sendet, sowie ob
Set-CookieHeader der Antwort berücksichtigt werden. Anmeldeinformationen sind Cookies, TLS Client-Zertifikate oder Authentifizierungs-Header mit einem Benutzernamen und Passwort. Diese Option kann einen der folgenden Werte haben:omit-
Niemals Anmeldedaten in der Anfrage oder Antwort senden oder einbeziehen.
same-origin-
Nur Anmeldedaten für gleichherzige Anfragen senden und einbeziehen.
include-
Immer Anmeldedaten einbeziehen, auch für grenzüberschreitende Anfragen.
Das Einbeziehen von Anmeldedaten in grenzüberschreitende Anfragen kann eine Seite anfällig für CSRF Angriffe machen, deshalb, selbst wenn
credentialsaufincludegesetzt ist, muss der Server auch ihrer Einbeziehung zustimmen, indem er dieAccess-Control-Allow-Credentialsin seine Antwort aufnimmt. Zusätzlich muss der Server in dieser Situation den Ursprung des Clients explizit in derAccess-Control-Allow-OriginAntwort-Header spezifizieren (das heißt,*ist nicht erlaubt).Weitere Details finden Sie unter Anmeldedaten einbeziehen.
Standardwert ist
same-origin. duplexOptional Experimentell-
Steuert das Duplex-Verhalten der Anfrage. Wenn dies vorhanden ist, muss es den Wert
halfhaben, was bedeutet, dass der Browser die gesamte Anfrage senden muss, bevor die Antwort verarbeitet wird.Diese Option muss vorhanden sein, wenn
bodyeinReadableStreamist. headersOptional-
Alle Header, die Sie Ihrer Anfrage hinzufügen möchten, enthalten in einem
HeadersObjekt oder einem Objektliteral, dessen Schlüssel die Namen der Header und dessen Werte die Header-Werte sind.Viele Header werden automatisch vom Browser gesetzt und können nicht durch ein Skript festgelegt werden: Dies sind die Verbotene Anforderungs-Header.
Wenn die
mode-Option aufno-corsgesetzt ist, können Sie nur CORS sicherheitsgeprüfte Anforderungs-Header festlegen.Weitere Details finden Sie unter Header setzen.
integrityOptional-
Enthält den Subresource-Integrität Wert der Anfrage.
Dies wird überprüft, wenn die Ressource abgerufen wird, genau 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 mit dem angegebenen Wert übereinstimmt, lehnt der Browser die Abrufanfrage mit einem Netzwerkfehler ab.Das Format dieser Option ist
<hash-algo>-<hash-source>, wobei:<hash-algo>einer der folgenden Werte ist:sha256,sha384odersha512<hash-source>ist die Base64-Codierung des Ergebnisses des Hashings der Ressource mit dem angegebenen Hash-Algorithmus.
Standardwert ist ein leerer String.
keepaliveOptional-
Ein Boolean. 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, um Analysen 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 HTTP-Methoden verwenden, die keinePOSTsind, anfrageeigenschaften anpassen und die Serverantwort über die Erfüllung des fetchPromisezugreifen. Es ist auch in Dienstarbeitern verfügbar.Die Körpergröße für
keepalive-Anfragen ist auf 64 Kibibyte begrenzt.Der Standardwert ist
false. methodOptional-
Die Anfragemethode.
Der Standardwert ist
GET. modeOptional-
Setzt das Verhalten über Ursprungsgrenzen hinweg für die Anfrage. Einer der folgenden Werte:
same-origin-
Verboten Anfragen über Ursprungsgrenzen hinweg. Wenn eine
same-origin-Anfrage an einen anderen Ursprung gesendet wird, ist das Ergebnis ein Netzwerkfehler. cors-
Wenn die Anfrage über Ursprungsgrenzen hinweg erfolgt, wird der Cross-Origin Resource Sharing (CORS) Mechanismus verwendet. Nur CORS sichere Antwort-Header werden in der Antwort offengelegt.
no-cors-
Deaktiviert CORS für Anfragen über Ursprungsgrenzen hinweg. Diese Option kommt mit den folgenden Einschränkungen:
- Die Methode darf nur
HEAD,GEToderPOSTsein. - Die Header dürfen nur CORS sicherheitsgeprüfte Anforderungs-Header sein, mit der zusätzlichen Einschränkung, dass der
RangeHeader ebenfalls nicht erlaubt ist. Dies gilt auch für alle von Dienstarbeitern hinzugefügten Header. - Die Antwort ist opake, das bedeutet, dass ihre Header und ihr Körper nicht in JavaScript verfügbar sind und ihr Statuscode immer
0ist.
Die hauptsächliche Anwendung für
no-corsist für einen Dienstarbeiter: obwohl die Antwort auf eineno-corsAnfrage nicht von JavaScript gelesen werden kann, kann sie von einem Dienstarbeiter zwischengespeichert und dann als Antwort auf eine abgefangene Abrufanfrage verwendet werden. Beachten Sie, dass Sie in dieser Situation nicht wissen, ob die Anfrage erfolgreich war oder nicht, weshalb Sie eine Zwischenspeicherstrategie anwenden sollten, die es ermöglicht, die zwischengespeicherte Antwort aus dem Netzwerk zu aktualisieren (wie cache first with cache refresh). - Die Methode darf nur
-
Wird nur von der HTML-Navigation verwendet. Eine
navigateAnfrage wird nur beim Navigieren zwischen Dokumenten erstellt.
Weitere Details finden Sie unter Anfragen über Ursprungsgrenzen hinweg stellen.
Der Standardwert ist
cors. priorityOptional-
Gibt die Priorität der fetch-Anfrage relativ zu anderen Anfragen desselben Typs an. Muss einer der folgenden Werte sein:
high-
Eine Abfrage mit hoher Priorität im Vergleich zu anderen Anfragen desselben Typs.
low-
Eine Abfrage mit niedriger Priorität im Vergleich zu anderen Anfragen desselben Typs.
auto-
Keine Benutzervorgabe für die fetch-Priorität. Es wird verwendet, wenn kein Wert gesetzt ist oder ein ungültiger Wert gesetzt ist.
Der Standardwert ist
auto. privateTokenOptional-
Ein Objekt, das Optionen zum Initiieren einer Privatstatus-Token Operation enthält. Mögliche Eigenschaften umfassen:
issuers-
Ein Array von Strings, das die URLs von Ausstellern enthält, für die Sie Einlösungsdatensätze weiterleiten möchten. Diese Einstellung wird ignoriert, es sei denn,
operationist aufsend-redemption-recordgesetzt, in welchem Fall dasissuers-Array enthalten sein muss. operation-
Ein String, der die Art der Token-Operation angibt, die Sie initiieren möchten. Wenn Sie die
privateToken-Option angeben, ist diese Eigenschaft obligatorisch. Mögliche Werte sind:token-request-
Initiiert eine Token-Anfrage Operation.
token-redemption-
Initiiert eine Token-Einlösung Operation.
send-redemption-record-
Initiiert eine Einlösungsdatensatz senden Operation.
refreshPolicy-
Ein enumerierter Wert, der das erwartete Verhalten festlegt, wenn ein nicht abgelaufener Einlösungsdatensatz für den aktuellen Benutzer und die aktuelle Seite zuvor festgelegt wurde. Diese Einstellung wird ignoriert, es sei denn,
operationist auftoken-redemptiongesetzt. Mögliche Werte sind: version-
Eine Zahl, die die Version des kryptografischen Protokolls angibt, das beim Generieren eines Tokens verwendet werden soll. Derzeit ist dies immer auf
1gesetzt, was die einzige Version ist, die die Spezifikation unterstützt. Wenn dieprivateToken-Option angegeben wird, ist diese Eigenschaft obligatorisch.
redirectOptional-
Bestimmt das Verhalten des Browsers im Fall, dass der Server mit einem Umleitungsstatus antwortet. Einer der folgenden Werte:
follow-
Automatisch Umleitungen folgen.
error-
Das Promise mit einem Netzwerkfehler ablehnen, wenn ein Umleitungsstatus zurückgegeben wird.
manual-
Eine Antwort mit fast allen gefilterten Feldern zurückgeben, um einem Dienstarbeiter zu ermöglichen, die Antwort zu speichern und später erneut abzuspielen.
Standardwert ist
follow. referrerOptional-
Ein String, der den Wert angibt, der für den
RefererHeader der Anfrage verwendet werden soll. Eines der folgenden:- Eine relative oder absolute URL vom selben Ursprung
-
Setzt den
RefererHeader auf den angegebenen Wert. Relative URLs werden relativ zur URL der Seite aufgelöst, die die Anfrage gestellt hat. - Ein leerer String
-
Lässt den
RefererHeader weg. about:client-
Setzt den
RefererHeader auf den Standardwert für den Kontext der Anfrage (zum Beispiel die URL der Seite, die die Anfrage gemacht hat).
Standardwert ist
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 abgebrochen werden, indemabort()auf dem entsprechendenAbortControlleraufgerufen wird.
Beispiele
>Optionen in fetch() übergeben
In diesem Beispiel übergeben wir die method, body und headers Optionen 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 einen Request, und übergeben denselben Satz von Optionen in seinen Konstruktor, und übergeben dann die Anfrage in fetch():
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 in fetch() übergeben
In diesem Beispiel erstellen wir einen Request, und übergeben die method, headers und body Optionen in seinen Konstruktor. Dann übergeben wir die Anfrage in fetch() zusammen mit den body und referrer Optionen:
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> |