RequestInit のフェッチ:スコープ対象、グローバル
RequestInit API には、フェッチ要求を設定するためのオプションが用意されています。
RequestInit オブジェクトを Request() コンストラクターに渡すか、 fetch() 関数呼び出しに直接渡すことができます。また、RequestInit() 呼び出しを使用して Request を作成し、別の RequestInit() とともに fetch() 呼び出しに Request を渡すこともできます。両方の場所で同じオプションが設定されているときにこれを行うと、 fetch() に直接渡された値が使用されます。
- フェッチ:fetch(文字列、リソース、オブジェクトオプション):ネットワークからリソースをフェッチするプロセスを開始します。
- ヘッダーのフェッチ :スコープ対象、グローバル:要求と応答のヘッダーを取得して変更します。
- 要求のフェッチ :スコープ対象、グローバル:新しい要求オブジェクトを作成します。
- RequestInit のフェッチ:スコープ対象、グローバル:フェッチ要求を構成するオプションを設定します。
- 応答のフェッチ :スコープ対象、グローバル:新しい応答オブジェクトを作成します。
フェッチアクションをサポートするために、システムプロパティ glide.hosts.allowlist では、fetch メソッドがアクセスできるホストを制御できます。これは、RestMessageV2 や上記のような HTTP API に適用されます。glide.hosts.allowlist の詳細については、「Available system properties」を参照してください。
RequestInit をフェッチ:RequestInit
フェッチ要求を構成するオプションを設定します。RequestInit オブジェクトを Request() コンストラクターに渡すか、 fetch() 関数呼び出しに直接渡すことができます。
RequestInit のプロパティ
RequestInit API は、HTTP 要求の動作を構成するために使用できるいくつかの省略可能なプロパティをサポートしています。そのプロパティには、 メソッド (HTTP メソッド)、 ヘッダー (要求ヘッダー)、 本文 (送信するデータ)、 モード (CORS モード)、 認証情報 (認証の詳細)、 キャッシュ (キャッシュ動作)、および リダイレクト、 リファラー、 整合性などの他のプロパティが含まれます。これらのオプションを使用すると、さまざまなユースケースで要求の動作を微調整できます。各プロパティの詳細については、「 https://developer.mozilla.org/en-US/docs/Web/API/RequestInit」を参照してください。
| プロパティ名 | 説明 |
|---|---|
| attributionレポート | オプション。リクエストのレスポンスで JavaScript ベースのアトリビューションソースまたはアトリビューショントリガーを登録できるようにすることを示します。 attributionReporting は、次のプロパティを含むオブジェクトです。
データタイプ: オブジェクト |
| 本文 | オプション。要求本文には、POST 要求や PUT 要求など、サーバーに送信するコンテンツが含まれています。 受け入れられるタイプ:
|
| 参照トピック | オプション。現在のユーザーに対して選択されたトピックを、関連する要求とともに Sec-Browsing-Topics ヘッダーで送信するかどうかを示すフラグ。 指定できる値:
データタイプ:ブーリアン |
| キャッシュ | オプション。要求に使用するキャッシュモード。 指定できる値:
データタイプ:文字列 |
| 認証情報 | オプション。ブラウザーが要求とともに認証情報を送信するかどうか、および Set-Cookie 応答ヘッダーを尊重するかどうかを制御します。認証情報は、Cookie、TLS クライアント証明書、またはユーザー名とパスワードを含む認証ヘッダーです。 指定できる値:
デフォルト:same-origin データタイプ:文字列 |
| ヘッダー | オプション。Headers オブジェクト内に含まれる、要求に追加するヘッダー。キーがヘッダーの名前であり、値がヘッダー値であるオブジェクトリテラルが含まれます。 多くのヘッダーはブラウザによって自動的に設定され、スクリプトでは設定できません。これらは禁止されたヘッダー名と呼ばれます。
データタイプ:文字列 |
| 完全性 | オプション。要求のサブリソース整合性値が含まれます。これは、リソースがフェッチされるときにチェックされます。ブラウザーは、指定されたアルゴリズムを使用してフェッチされたリソースのハッシュを計算し、結果が指定された値と一致しない場合、ブラウザーはネットワークエラーでフェッチ要求を拒否します。 このオプションの形式は <hash-algo>-<hash-source> です。
デフォルトは空の文字列です。 データタイプ:文字列 |
| キープアライブ | オプション。要求が完了する前に、要求を開始したページがアンロードされた場合に関連する要求を中止するかどうかを示すフラグ。
有効な値:
データタイプ:ブーリアン デフォルト値:false |
| メソッド | オプション。要求メソッド。 データタイプ:文字列 デフォルト:GET |
| モード | オプション。要求のクロスオリジン動作を設定します。 有効な値:
データタイプ:文字列 デフォルト:cors |
| priority | オプション。同じタイプの他の要求と比較した場合の、フェッチ要求の優先度を指定します。 有効な値:
データタイプ:文字列 デフォルト:auto |
| リダイレクト | オプション。サーバーがリダイレクトステータスで応答した場合のブラウザの動作を決定します。 指定できる値:
データタイプ:文字列 デフォルト:フォロー |
| リファラー | オプション。要求の Referrer ヘッダーに使用する値を指定する文字列。 指定できる値とデータタイプ:
デフォルト:about:client |
| referrerPolicy | オプション。Referrer ヘッダーのポリシーを設定する文字列。このオプションの構文とセマンティクスは、Referrer-Policy ヘッダーの場合とまったく同じです。 データタイプ:文字列 |
| シグナル | オプション。AbortSignal。このオプションが設定されている場合、対応する AbortController で abort() を呼び出すことで、リクエストを取り消すことができます。データタイプ:文字列 |
| タイプ | 説明 |
|---|---|
| なし |
fetch() にオプションを渡す
この例は、メソッド、本文、ヘッダーのオプションを fetch() メソッドに直接渡す方法を示しています。
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);
}
Request() コンストラクターにオプションを渡す
この例では、Request を作成し、メソッド、本文、ヘッダーのオプションをコンストラクターに渡し、リクエストを 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);
}
Request() と fetch() の両方にオプションを渡す
この例では、 Request() を作成し、メソッド、本文、およびヘッダーのオプションをコンストラクターに渡す方法を示しています。次に、スクリプトは、本文および参照元オプションとともに要求を fetch() に渡します。
- メソッド:「POST」
- ヘッダー:{"Content-Type": "application/json"}
- 本文:'{"username":"example2"}'
- リファラー: ""
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);
}