Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
Request: Request()-Konstruktor
Baseline
Weitgehend verfügbar
*
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit März 2017 browserübergreifend verfügbar.
* Einige Teile dieser Funktion werden möglicherweise unterschiedlich gut unterstützt.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Der Request()-Konstruktor erstellt ein neues Request-Objekt.
Syntax
new Request(input)
new Request(input, options)
Parameter
input-
Definiert die Ressource, die Sie abrufen möchten. Dies kann Folgendes sein:
- Ein String mit der URL der Ressource, die Sie abrufen möchten. Die URL kann relativ zur Basis-URL sein. In einem Window-Kontext ist dies die
baseURIdes Dokuments, in einem Worker-KontextWorkerGlobalScope.location. - Ein
Request-Objekt, wodurch praktisch eine Kopie erstellt wird. Beachten Sie die folgenden Verhaltensanpassungen, die die Sicherheit gewährleisten und zugleich die Wahrscheinlichkeit verringern, dass der Konstruktor Ausnahmen auslöst:- Wenn dieses Objekt von einem anderen Origin stammt als der Konstruktoraufruf, wird
Request.referrerentfernt. - Wenn
Request.modedieses Objekts den Wertnavigatehat, wird der Wert vonmodeinsame-originumgewandelt.
- Wenn dieses Objekt von einem anderen Origin stammt als der Konstruktoraufruf, wird
- Ein String mit der URL der Ressource, die Sie abrufen möchten. Die URL kann relativ zur Basis-URL sein. In einem Window-Kontext ist dies die
optionsOptional-
Ein
RequestInit-Objekt mit benutzerdefinierten Einstellungen, die Sie auf die Anfrage anwenden möchten.Wenn Sie ein neues
Request-Objekt aus einem vorhandenenRequest-Objekt erstellen, ersetzen die Einstellungen im Argument options der neuen Anfrage die entsprechenden Einstellungen des ursprünglichenRequest-Objekts. Beispiel:jsconst oldRequest = new Request( "https://github.com/mdn/content/issues/12959", { headers: { From: "webmaster@example.org" } }, ); oldRequest.headers.get("From"); // "webmaster@example.org" const newRequest = new Request(oldRequest, { headers: { From: "developer@example.org" }, }); newRequest.headers.get("From"); // "developer@example.org"
Ausnahmen
NotAllowedErrorDOMException-
Wird ausgelöst, wenn:
- Die Verwendung der Topics API durch eine
browsing-topics-Permissions Policy ausdrücklich untersagt ist undbrowsingTopicsauftruegesetzt ist. - Die Verwendung von Operationen der Private State Token API durch eine
private-state-token-issuance- oderprivate-state-token-redemption-Permissions Policy ausdrücklich untersagt ist und die OptionprivateTokenangegeben wurde, einschließlich eines nicht zulässigen Typs fürprivateToken.operation.
- Die Verwendung der Topics API durch eine
TypeError-
Wird ausgelöst, wenn:
- Die URL Zugangsdaten enthält, beispielsweise
http://user:password@example.com, oder nicht geparst werden kann. - Die Initialisierungsoption
privateTokenangegeben wurde, einschließlich einesprivateToken.operation-Typs mit dem Wertsend-redemption-record, und das ArrayprivateToken.issuesleer oder nicht festgelegt war oder eine oder mehrere der angegebenenissuerskeine vertrauenswürdigen HTTPS-URLs sind.
- Die URL Zugangsdaten enthält, beispielsweise
Beispiele
In unserem Fetch-Request-Beispiel (siehe Fetch-Request-Live-Demo) erstellen wir mit dem Konstruktor ein neues Request-Objekt und rufen die Ressource anschließend mit fetch() ab.
Da wir ein Bild abrufen, rufen wir Response.blob für die Antwort auf, damit sie den passenden MIME-Typ erhält und korrekt verarbeitet wird. Anschließend erstellen wir daraus eine Objekt-URL und zeigen das Bild in einem <img>-Element an.
const myImage = document.querySelector("img");
const myRequest = new Request("flowers.jpg");
fetch(myRequest)
.then((response) => response.blob())
.then((response) => {
const objectURL = URL.createObjectURL(response);
myImage.src = objectURL;
});
In unserem Fetch-Request-Beispiel mit Initialisierungsoptionen (siehe Live-Demo) gehen wir genauso vor, übergeben beim Aufruf von fetch() jedoch zusätzlich ein options-Objekt.
In diesem Fall können wir einen Wert für Cache-Control festlegen, um anzugeben, welche Arten zwischengespeicherter Antworten wir akzeptieren:
const myImage = document.querySelector("img");
const reqHeaders = new Headers();
// A cached response is okay unless it's more than a week old.
reqHeaders.set("Cache-Control", "max-age=604800");
const options = {
headers: reqHeaders,
};
// pass init as an "options" object with our headers
const req = new Request("flowers.jpg", options);
fetch(req).then((response) => {
// …
});
Sie können options auch direkt an den fetch-Aufruf übergeben, um denselben Effekt zu erzielen, beispielsweise:
fetch(req, options).then((response) => {
// …
});
Sie können für headers in options auch ein Objektliteral verwenden.
const options = {
headers: {
"Cache-Control": "max-age=60480",
},
};
const req = new Request("flowers.jpg", options);
Sie können dem Request()-Konstruktor außerdem ein Request-Objekt übergeben, um eine Kopie des Request-Objekts zu erstellen. Dies ähnelt dem Aufruf der Methode clone().
const copy = new Request(req);
Hinweis: Diese letzte Verwendung ist wahrscheinlich nur in ServiceWorkers nützlich.
Spezifikationen
| Spezifikation |
|---|
| Fetch> # dom-request> |
