RequestInit
Das RequestInit Dictionary der Fetch API stellt die Menge von 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 Aufruf der fetch()-Funktion übergeben.
Sie können auch ein Request mit einem RequestInit konstruieren und das 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 an fetch() übergeben wurde.
Instanz-Eigenschaften
attributionReportingOptional-
Gibt an, dass Sie möchten, dass die Antwort der Anfrage in der Lage ist, eine Javascript-basierte Attributionsquelle oder einen Attribution Trigger zu registrieren.
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.
Siehe die Attribution Reporting API für weitere Details.
bodyOptional-
Der Anfragetext 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 Einen Body setzen für weitere Details.
browsingTopicsOptional-
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.Siehe Verwendung der 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 in seinem HTTP-Cache nach einer Antwort, die der Anfrage entspricht.
- Wenn es eine Übereinstimmung gibt und diese 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 Remote-Server stellen. Wenn der Server anzeigt, 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, wird der Browser eine normale Anfrage stellen und den Cache mit der heruntergeladenen Ressource aktualisieren.
no-store-
Der Browser ruft die Ressource vom Remote-Server ab, ohne zuerst im Cache nachzuschauen, und wird den Cache nicht mit der heruntergeladenen Ressource aktualisieren.
reload-
Der Browser ruft die Ressource vom Remote-Server ab, ohne zuerst im Cache nachzuschauen, aktualisiert anschließend jedoch den Cache mit der heruntergeladenen Ressource.
no-cache-
Der Browser schaut in seinem HTTP-Cache nach einer Antwort, die der Anfrage entspricht.
- Wenn es eine Übereinstimmung gibt, frisch oder veraltet, wird der Browser eine bedingte Anfrage an den Remote-Server stellen. Wenn der Server anzeigt, dass die Ressource sich 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, wird der Browser eine normale Anfrage stellen und den Cache mit der heruntergeladenen Ressource aktualisieren.
force-cache-
Der Browser schaut in seinem HTTP-Cache nach einer Antwort, die der Anfrage entspricht.
- Wenn es eine Übereinstimmung gibt, frisch oder veraltet, wird sie aus dem Cache zurückgegeben.
- Wenn es keine Übereinstimmung gibt, wird der Browser eine normale Anfrage stellen und den Cache mit der heruntergeladenen Ressource aktualisieren.
only-if-cached-
Der Browser schaut in seinem HTTP-Cache nach einer Antwort, die der Anfrage entspricht.
- 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 Weiterleitungen werden befolgt, wenn dieredirect-Eigenschaft der Anfrage auf"follow"gesetzt ist und die Weiterleitungen den Modus"same-origin"nicht verletzen. credentialsOptional-
Bestimmt, ob der Browser Anmeldeinformationen mit der Anfrage sendet und ob
Set-CookieHeader in der Antwort berücksichtigt werden. Anmeldeinformationen sind Cookies, TLS Client-Zertifikate oder Authentifizierungs-Header, die einen Benutzernamen und ein Passwort enthalten. Diese Option kann einen der folgenden Werte haben:omit-
Niemals Anmeldeinformationen in der Anfrage senden oder Anmeldeinformationen in der Antwort einbeziehen.
same-origin-
Anmeldeinformationen nur für gleich-originierte Anfragen senden und einbeziehen.
include-
Immer Anmeldeinformationen einbeziehen, auch für Cross-Origin-Anfragen.
Das Einbeziehen von Anmeldeinformationen in Cross-Origin-Anfragen kann eine Website für CSRF-Angriffe verwundbar machen, daher muss der Server, auch wenn
credentialsaufincludegesetzt ist, der Einbeziehung durch Einfügen desAccess-Control-Allow-Credentialsin seine Antwort zustimmen. Darüber hinaus muss der Server in dieser Situation explizit den Ursprung des Clients imAccess-Control-Allow-OriginAntwort-Header angeben (das heißt,*ist nicht erlaubt).Siehe Einbeziehen von Anmeldeinformationen für weitere Details.
Standardwert ist
same-origin. duplexOptional-
Kontrolliert 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 zu Ihrer Anfrage hinzufügen möchten, enthalten in einem
HeadersObjekt oder einem Objekt-Literal, dessen Schlüssel die Namen der Header und deren 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 Anforderungs-Header bezeichnet.
Wenn die
mode-Option aufno-corsgesetzt ist, können Sie nur CORS-safelisted request headers setzen.Siehe Header setzen für weitere Details.
integrityOptional-
Enthält den Subresource-Integrity 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 mit dem angegebenen Wert übereinstimmt, lehnt der Browser die Fetch-Anfrage mit einem Netzfehler 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-Kodierung 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 außerPOSTverwenden, Anforderungseigenschaften anpassen und die Serverantwort über die Erfüllung des FetchPromisezugreifen. Es ist auch in Service-Worker verfügbar.Die Body-Größe für
keepaliveAnfragen ist auf 64 Kibibyte begrenzt.Standardwert ist
false. methodOptional-
Die Anfragemethode.
Standardwert ist
GET. modeOptional-
Legt das Cross-Origin-Verhalten für die Anfrage fest. Einer der folgenden Werte:
same-origin-
Unterbindet Cross-Origin-Anfragen. Wenn eine
same-originAnfrage an einen anderen Ursprung gesendet wird, ist das Ergebnis ein Netzfehler. cors-
Wenn die Anfrage Cross-Origin ist, wird der Cross-Origin Resource Sharing (CORS) Mechanismus verwendet. Nur CORS-safelisted response headers werden in der Antwort freigelegt.
no-cors-
CORS ist für Cross-Origin-Anfragen deaktiviert. Diese Option bringt die folgenden Einschränkungen mit sich:
- Die Methode darf nur eine von
HEAD,GEToderPOSTsein. - Die Header dürfen nur CORS-safelisted request headers sein, mit der zusätzlichen Einschränkung, dass auch der
RangeHeader nicht erlaubt ist. Dies gilt auch für alle vom Service-Worker hinzugefügten Header. - Die Antwort ist opaqu, was 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 ein Service-Worker: Obwohl die Antwort auf eineno-corsAnfrage von JavaScript nicht gelesen werden kann, kann sie von einem Service-Worker zwischengespeichert und dann als Antwort auf eine abgefangene Fetch-Anfrage verwendet werden. Beachten Sie, dass in dieser Situation nicht bekannt ist, ob die Anfrage erfolgreich war oder nicht, daher sollten Sie eine Caching-Strategie annehmen, die die Aktualisierung der zwischengespeicherten Antwort aus dem Netzwerk ermöglicht (wie Cache first mit Cache-Refresh). - Die Methode darf nur eine von
-
Wird nur von HTML-Navigation verwendet. Eine
navigateAnfrage wird nur beim Navigieren zwischen Dokumenten erstellt.
Siehe Cross-Origin-Anfragen durchführen für weitere Details.
Standardwert ist
cors. priorityOptional-
Gibt die Priorität der Fetch-Anfrage im Verhältnis zu anderen Anfragen desselben Typs an. Muss einer der folgenden sein:
high-
Eine Fetch-Anfrage mit hoher Priorität im Verhältnis zu anderen Anfragen desselben Typs.
low-
Eine Fetch-Anfrage mit niedriger Priorität im Verhältnis zu anderen Anfragen desselben Typs.
auto-
Keine Benutzerpräferenz für die Fetch-Priorität. Es wird verwendet, wenn kein Wert festgelegt ist oder ein ungültiger Wert festgelegt ist.
Standardwert ist
auto. privateTokenOptional-
Ein Objekt, das Optionen für den Start einer Private State Token Operation enthält. Mögliche Eigenschaften umfassen:
issuers-
Ein Array von Strings, das die URLs von Herausgebern enthält, für die Sie Einlösungsberichte weiterleiten möchten. Diese Einstellung wird ignoriert, es sei denn,
operationist aufsend-redemption-recordgesetzt, in diesem Fall muss dasissuersArray enthalten sein. operation-
Ein String, der den Typ der Token-Operation angibt, die Sie starten möchten. Bei Angabe der
privateTokenOption ist diese Eigenschaft obligatorisch. Mögliche Werte sind:token-request-
Startet eine Token-Anfrage Operation.
token-redemption-
Startet eine Token-Einlösung Operation.
send-redemption-record-
Startet eine Sendeeinlösungsbericht Operation.
refreshPolicy-
Ein enumerierter Wert, der das erwartete Verhalten angibt, wenn ein nicht abgelaufener Einlösungsbericht für den aktuellen Benutzer und die aktuelle Website 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 Sie bei der Erstellung eines Tokens verwenden möchten. Derzeit ist dies immer auf
1gesetzt, was die einzige Version ist, die die Spezifikation unterstützt. Bei Angabe derprivateTokenOption ist diese Eigenschaft erforderlich.
redirectOptional-
Bestimmt das Verhalten des Browsers, falls der Server mit einem Umleitungsstatus antwortet. Einer der folgenden Werte:
follow-
Umleitungen automatisch folgen.
error-
Den Promise mit einem Netzwerkfehler ablehnen, wenn ein Umleitungsstatus zurückgegeben wird.
manual-
Eine Antwort mit fast allen gefilterten Feldern zurückgeben, um einem Service-Worker zu ermöglichen, die Antwort zu speichern und später wiederzugeben.
Standardwert ist
follow. referrerOptional-
Ein String, der den Wert angibt, der für den
RefererHeader der Anfrage verwendet werden soll. Einer der folgenden:- Eine gleiche Origin relative oder absolute URL
-
Setzen Sie den
RefererHeader auf den angegebenen Wert. Relative URLs werden relativ zur URL der Seite gelöst, die die Anfrage gestellt hat. - Ein leerer String
-
Den
RefererHeader auslassen. about:client-
Setzen Sie den
RefererHeader auf den Standardwert für den Kontext der Anfrage (zum Beispiel die URL der Seite, die die Anfrage gestellt hat).
Standardwert ist
about:client. referrerPolicyOptional-
Ein String, der eine Richtlinie für den
RefererHeader festlegt. Die Syntax und Semantik dieser Option sind genau dieselben wie für denReferrer-PolicyHeader. signalOptional-
Ein
AbortSignal. Wenn diese Option gesetzt ist, kann die Anfrage abgebrochen werden, indemabort()am entsprechendenAbortControlleraufgerufen wird. targetAddressSpaceOptional-
Ein enumerierter Wert, der angibt, ob die Anfrage eine Loopback-, lokale oder öffentliche Anfrage sein soll. Dies steuert, wie der Benutzeragent mit gemischten Inhalten umgeht. Gültige Werte sind:
local-
Die Anfrage ist an eine lokale Adresse gerichtet, die nur im lokalen Netzwerk zugänglich ist; ihr Ziel wird in verschiedenen Netzwerken unterschiedlich sein. Zum Beispiel,
192.168.0.1. loopback-
Die Anfrage ist an eine Loopback-Adresse gerichtet, die nur auf dem lokalen Gerät zugänglich ist; ihr Ziel wird auf jedem Gerät unterschiedlich sein. Zum Beispiel,
127.0.0.1, das allgemein alslocalhostbekannt ist. public-
Die Anfrage ist an eine Adresse gerichtet, die von überall im Internet erreichbar ist; ihr Ziel ist auf allen Geräten global gleich. Zum Beispiel,
104.18.27.120(die IP-Adresse vonexample.com)
Siehe Lokaler Netzwerkzugriff für weitere Informationen.
Beispiele
>Optionen in fetch() übergeben
In diesem Beispiel übergeben wir die Optionen method, body und headers direkt an den Aufruf der fetch() Methode:
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 ein Request, indem wir denselben Satz von Optionen an seinen Konstruktor übergeben, und übergeben dann das Request an 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 ein Request, indem wir die Optionen method, headers und body an seinen Konstruktor übergeben. Wir übergeben dann das Request an 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
| Spezifikation |
|---|
| Fetch> # requestinit> |