Request: Request() コンストラクター
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2017年3月.
* Some parts of this feature may have varying levels of support.
メモ: この機能はウェブワーカー内で利用可能です。
Request() コンストラクターは、新しい Request オブジェクトを生成します。
構文
new Request(input)
new Request(input, options)
引数
input-
取得したいリソースを定義します。次のいずれかの値を取ります。
- 取得したいリソースの URL の入った文字列。 URL は、ベース URL に対する相対 URL である可能性があります。ベース URL とは、ウィンドウコンテキストでは文書内の
baseURI、ワーカーコンテキストではWorkerGlobalScope.locationです。 - 効率的にコピーを作成するための
Requestオブジェクト。なお、コンストラクターが例外を発生させる可能性を下げるため、セキュリティーを保持するための以下の動作上の更新に注意してください。- このオブジェクトがコンストラクターの呼び出しとは別のオリジンに存在する場合、
Request.referrerが削除されます。 - このオブジェクトの
Request.modeがnavigateである場合、modeの値がsame-originに変換されます。
- このオブジェクトがコンストラクターの呼び出しとは別のオリジンに存在する場合、
- 取得したいリソースの URL の入った文字列。 URL は、ベース URL に対する相対 URL である可能性があります。ベース URL とは、ウィンドウコンテキストでは文書内の
options省略可-
リクエストに適用したいカスタム設定が含まれている
RequestInitオブジェクトです。既存の
Requestから新しいRequestを作成する場合、新しいリクエストの options 引数に設定したオプションは、元のRequestに設定された対応するオプションを置き換えます。例えば次の通りです。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"
例外
TypeError-
URL に
http://user:password@example.comのように資格情報が入っていたり、解釈できなかったりした場合。
例
Fetch Request の例 (Fetch Request のライブ版 を参照) では、コンストラクターを使用して新しいリクエストオブジェクトを生成してから、 fetch() 呼び出しを使用して取得しています。画像を取得してから、それを適切に処理できるように MIME タイプを設定するため、レスポンスの Response.blob を実行しています。それから、オブジェクト URL を生成して、 <img> 要素に表示しています。
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;
});
Fetch Request with init の例 (Fetch Request init のライブ版 を参照) では、 fetch() を呼び出すときに初期化オブジェクトを渡している以外は同じです。
この場合、 Cache-Control の値を設定して、どのようなキャッシュレスポンスなら許容できるかを示すことができます。
const myImage = document.querySelector("img");
const reqHeaders = new Headers();
// キャッシュされたレスポンスは、 1 週間以上経過していなければ OK。
reqHeaders.set("Cache-Control", "max-age=604800");
const options = {
headers: reqHeaders,
};
// 初期値をヘッダーの "options" オブジェクトとして渡す
const req = new Request("flowers.jpg", options);
fetch(req).then((response) => {
// ...
});
同様の効果を得るために、 fetch 呼び出しに初期化オブジェクトを渡せることにも注目してください。例えば次の通りです。
fetch(req, options).then((response) => {
// ...
});
options の中の headers としてオブジェクトリテラルを使用することもできます。
const options = {
headers: {
"Cache-Control": "max-age=60480",
},
};
const req = new Request("flowers.jpg", options);
リクエストのコピーを作成するために、 Request オブジェクトを Request() コンストラクターに渡すこともできます(これは clone() メソッドを呼び出すのと似ています)。
const copy = new Request(req);
メモ: 最後の使い方はサービスワーカー内でのみ使用できます。
仕様書
| Specification |
|---|
| Fetch> # ref-for-dom-request①> |
ブラウザーの互換性
Loading…