RequestInit のフェッチ:スコープ対象、グローバル

  • リリースバージョン: Zurich
  • 更新日 2025年07月31日
  • 所要時間:12分
  • RequestInit API には、フェッチ要求を設定するためのオプションが用意されています。

    RequestInit オブジェクトを Request() コンストラクターに渡すか、 fetch() 関数呼び出しに直接渡すことができます。また、RequestInit() 呼び出しを使用して Request を作成し、別の RequestInit() とともに fetch() 呼び出しに Request を渡すこともできます。両方の場所で同じオプションが設定されているときにこれを行うと、 fetch() に直接渡された値が使用されます。

    この API は、外部 Web サイトからリソースをフェッチするためのさまざまなアクションを提供する 一連の Fetch API の一部です。完全な Fetch API コレクションには、次のものが含まれます。

    フェッチアクションをサポートするために、システムプロパティ 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」を参照してください。

    表 : 1. RequestInit のプロパティ
    プロパティ名 説明
    attributionレポート オプション。リクエストのレスポンスで JavaScript ベースのアトリビューションソースまたはアトリビューショントリガーを登録できるようにすることを示します。
    attributionReporting は、次のプロパティを含むオブジェクトです。
    • eventSourceEligible:ブーリアン。true に設定すると、リクエストのレスポンスはアトリビューションソースを登録する資格があります。false に設定すると、アトリビューションソースとして登録されません。
    • triggerEligible:ブーリアン。true に設定すると、リクエストのレスポンスがアトリビューショントリガーに登録されます。falseに設定すると、アトリビューショントリガーとして登録できません。

    データタイプ: オブジェクト

    本文 オプション。要求本文には、POST 要求や PUT 要求など、サーバーに送信するコンテンツが含まれています。
    受け入れられるタイプ:
    • ArrayBuffer
    • 文字列
    • BLOB
    • データビュー
    • ファイル
    • FormData
    • ReadableStream
    • TypedArray
    • URLSearchParams
    参照トピック オプション。現在のユーザーに対して選択されたトピックを、関連する要求とともに Sec-Browsing-Topics ヘッダーで送信するかどうかを示すフラグ。
    指定できる値:
    • true:現在のユーザーの選択したトピックは、Sec-Browsing-Topics ヘッダーで送信する必要があります
    • false:現在のユーザーに対して選択されたトピックを Sec-Browsing-Topics ヘッダーで送信しないでください。

    データタイプ:ブーリアン

    キャッシュ オプション。要求に使用するキャッシュモード。
    指定できる値:
    • default:ブラウザーは、要求に一致する応答を HTTP キャッシュで検索します。
    • force-cache: ブラウザーは、HTTP キャッシュで要求に一致する応答を探します。
    • no-cache:ブラウザはHTTPキャッシュでリクエストに一致するレスポンスを探します。
    • no-store:ブラウザは最初にキャッシュを確認せずにリモートサーバーからリソースを取得し、ダウンロードしたリソースでキャッシュを更新しません。
    • only-if-cached:ブラウザはHTTPキャッシュでリクエストに一致するレスポンスを探します。
    • reload: ブラウザーは、最初にキャッシュを確認せずにリモート サーバーからリソースを取得しますが、ダウンロードしたリソースでキャッシュを更新します。

    キャッシュされた場合のみモードは、リクエストのモードが同一オリジンの場合にのみ使用できます。キャッシュされたリダイレクトは、要求の リダイレクト プロパティが follow であり、リダイレクトが 同一生成元 モードに違反していない場合に従います。

    データタイプ:文字列

    認証情報 オプション。ブラウザーが要求とともに認証情報を送信するかどうか、および Set-Cookie 応答ヘッダーを尊重するかどうかを制御します。認証情報は、Cookie、TLS クライアント証明書、またはユーザー名とパスワードを含む認証ヘッダーです。
    指定できる値:
    • include:クロスオリジン要求の場合でも、常に認証情報を含めます。
      注:
      クロスオリジン要求に認証情報を含めると、サイトが CSRF 攻撃に対して脆弱になる可能性があるため、認証情報を含めるように設定されている場合でも、サーバーは応答に Access-Control-Allow-Credentials を含めて認証情報を含めることに同意する必要があります。さらに、この状況では、サーバーは Access-Control-Allow-Origin 応答ヘッダーでクライアントのオリジンを明示的に指定する必要があります ( つまり、 * は許可されません)。
    • 省略:要求で認証情報を送信したり、応答に認証情報を含めたりしません。
    • same-origin:同一オリジン要求の認証情報のみを送信して含めます。

    デフォルト:same-origin

    データタイプ:文字列

    ヘッダー オプション。Headers オブジェクト内に含まれる、要求に追加するヘッダー。キーがヘッダーの名前であり、値がヘッダー値であるオブジェクトリテラルが含まれます。

    多くのヘッダーはブラウザによって自動的に設定され、スクリプトでは設定できません。これらは禁止されたヘッダー名と呼ばれます。

    mode オプションが no-cors に設定されている場合は、CORS セーフリストに登録された要求ヘッダーのみを設定できます。

    データタイプ:文字列

    完全性 オプション。要求のサブリソース整合性値が含まれます。これは、リソースがフェッチされるときにチェックされます。ブラウザーは、指定されたアルゴリズムを使用してフェッチされたリソースのハッシュを計算し、結果が指定された値と一致しない場合、ブラウザーはネットワークエラーでフェッチ要求を拒否します。
    このオプションの形式は <hash-algo>-<hash-source> です。
    • <hash-algo>:sha256、sha384、または sha512 のいずれかの値です。
    • <hash-source>:指定したハッシュアルゴリズムでリソースをハッシュした結果のBase64エンコーディングです。

    デフォルトは空の文字列です。

    データタイプ:文字列

    キープアライブ オプション。要求が完了する前に、要求を開始したページがアンロードされた場合に関連する要求を中止するかどうかを示すフラグ。

    キープアライブ要求の本文サイズは 64 キビバイトに制限されています。

    有効な値:
    • true:ブラウザは関連する要求を中止しません。
    • false:関連する要求を中止します。

    データタイプ:ブーリアン

    デフォルト値:false

    メソッド オプション。要求メソッド。

    データタイプ:文字列

    デフォルト:GET

    モード オプション。要求のクロスオリジン動作を設定します。
    有効な値:
    • same-origin:クロスオリジンリクエストを許可しません。同じオリジンの要求が別のオリジンに送信されると、ネットワークエラーが発生します。
    • cors: リクエストがクロスオリジンの場合、クロスオリジンリソース共有 (CORS) メカニズムが使用されます。CORS セーフリストに登録された応答ヘッダーのみが応答で公開されます。
    • no-cors:クロスオリジン要求の CORS を無効にします。このオプションには、次の制限があります。
      • メソッドは、HEAD、GETまたは POST のいずれかにのみ使用できます。
      • ヘッダーは CORS セーフリストに登録されたリクエストヘッダーのみにすることができますが、Range ヘッダーも許可されないという追加の制限があります。これは、Service Worker によって追加されたヘッダーにも適用されます。
      • 応答は不透明です。つまり、ヘッダーと本文は JavaScript で使用できず、ステータスコードは常に 0 です。
    • navigate:HTML ナビゲーションでのみ使用されます。移動要求は、ドキュメント間を移動するときにのみ作成されます。

    データタイプ:文字列

    デフォルト:cors

    priority オプション。同じタイプの他の要求と比較した場合の、フェッチ要求の優先度を指定します。
    有効な値:
    • auto:フェッチ優先度のユーザー設定はありません。値が設定されていない場合、または無効な値が設定されている場合に使用されます。
    • high:同じタイプの他の要求と比較して優先度の高いフェッチ要求。
    • 低:同じタイプの他の要求と比較して優先度が低いフェッチ要求。

    データタイプ:文字列

    デフォルト:auto

    リダイレクト オプション。サーバーがリダイレクトステータスで応答した場合のブラウザの動作を決定します。
    指定できる値:
    • follow:自動的にリダイレクトに従います。
    • error:リダイレクトステータスが返されたときに、ネットワークエラーで約束を拒否します。
    • manual:サービスワーカーが応答を保存し、後で再生できるように、ほぼすべてのフィールドを除外した応答を返します。

    データタイプ:文字列

    デフォルト:フォロー

    リファラー オプション。要求の Referrer ヘッダーに使用する値を指定する文字列。
    指定できる値とデータタイプ:
    • about:client: Referrer ヘッダーを、リクエストのコンテキストのデフォルト値 (リクエストを行ったページの URL など) に設定します。
    • 空の文字列: Referrer ヘッダーを省略します。
    • same-origin relative or absolute URL: Referrer ヘッダーを指定された値に設定します。相対 URL は、要求を行ったページの URL を基準にして解決されます。

    デフォルト:about:client

    referrerPolicy オプション。Referrer ヘッダーのポリシーを設定する文字列。このオプションの構文とセマンティクスは、Referrer-Policy ヘッダーの場合とまったく同じです。

    データタイプ:文字列

    シグナル オプション。AbortSignal。このオプションが設定されている場合、対応する AbortControllerabort() を呼び出すことで、リクエストを取り消すことができます。

    データタイプ:文字列

    表 : 2. 返される内容
    タイプ 説明
    なし

    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);
    }