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