Anfrage: Request() Konstruktor
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. It’s been available across browsers since März 2017.
* Some parts of this feature may have varying levels of support.
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 entweder sein:
- Ein String, der die URL der Ressource enthält, die Sie abrufen möchten. Die URL kann relativ zur Basis-URL sein, die sich im Fensterkontext auf die
baseURIdes Dokuments oder im Worker-Kontext aufWorkerGlobalScope.locationbezieht. - Ein
RequestObjekt, das effektiv eine Kopie erstellt. Beachten Sie die folgenden Verhaltensaktualisierungen, um die Sicherheit zu gewährleisten und das Auftreten von Ausnahmen zu reduzieren:- Wenn dieses Objekt auf einem anderen Ursprung als der Konstruktoraufruf existiert, wird der
Request.referrerentfernt. - Wenn dieses Objekt einen
Request.modevonnavigatehat, wird dermode-Wert zusame-originkonvertiert.
- Wenn dieses Objekt auf einem anderen Ursprung als der Konstruktoraufruf existiert, wird der
- Ein String, der die URL der Ressource enthält, die Sie abrufen möchten. Die URL kann relativ zur Basis-URL sein, die sich im Fensterkontext auf die
optionsOptional-
Ein
RequestInitObjekt, das alle benutzerdefinierten Einstellungen enthält, die Sie auf die Anfrage anwenden möchten.Wenn Sie ein neues
Requestaus einem bestehendenRequestkonstruieren, ersetzen alle Optionen, die Sie in einem options Argument für die neue Anfrage festlegen, alle entsprechenden Optionen, die im ursprünglichenRequestfestgelegt wurden. Zum 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-topicsBerechtigungsrichtlinie speziell untersagt ist undbrowsingTopicsauftruegesetzt ist. - Die Verwendung von Operationen der Private State Token API durch eine
private-state-token-issuanceoderprivate-state-token-redemptionBerechtigungsrichtlinie speziell untersagt ist und dieprivateToken-Option angegeben ist, einschließlich eines nicht erlaubtenprivateToken.operationTyps.
- Die Verwendung der Topics API durch eine
TypeError-
Wird ausgelöst, wenn:
- Die URL Anmeldedaten enthält, wie
http://user:password@example.com, oder nicht analysiert werden kann. - Die
privateTokenInit-Option angegeben ist, einschließlich einesprivateToken.operationTyps vonsend-redemption-recordund dasprivateToken.issuesArray leer war oder nicht gesetzt wurde, oder ein oder mehrere der angegebenenissuerskeine vertrauenswürdigen HTTPS-URLs sind.
- Die URL Anmeldedaten enthält, wie
Beispiele
In unserem Fetch Request Beispiel (siehe Fetch Request live) erstellen wir ein neues Request Objekt mit dem Konstruktor, das wir dann mit einem fetch() Aufruf abrufen.
Da wir ein Bild abrufen, führen wir Response.blob auf der Antwort aus, um den richtigen MIME-Typ zu erhalten, damit es korrekt behandelt wird, erstellen dann eine Objekt-URL daraus und zeigen sie 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 mit init Beispiel (siehe Fetch Request init live) tun wir dasselbe, außer dass wir ein options Objekt übergeben, wenn wir fetch() aufrufen.
In diesem Fall können wir einen Cache-Control Wert festlegen, um anzugeben, mit welcher Art von zwischengespeicherten Antworten wir einverstanden sind:
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) => {
// …
});
Beachten Sie, dass Sie options auch in den fetch Aufruf übergeben könnten, um denselben Effekt zu erzielen, z.B.:
fetch(req, options).then((response) => {
// …
});
Sie können auch ein Objektliteral als headers in options verwenden.
const options = {
headers: {
"Cache-Control": "max-age=60480",
},
};
const req = new Request("flowers.jpg", options);
Sie können auch ein Request Objekt an den Request() Konstruktor übergeben, um eine Kopie des Requests zu erstellen (dies ist ähnlich wie der Aufruf der clone() Methode).
const copy = new Request(req);
Hinweis: Dieser letzte Gebrauch ist wahrscheinlich nur in ServiceWorkers nützlich.
Spezifikationen
| Specification |
|---|
| Fetch # ref-for-dom-request① |
Browser-Kompatibilität
Enable JavaScript to view this browser compatibility table.