Request: mode プロパティ

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.

* Some parts of this feature may have varying levels of support.

メモ: この機能はウェブワーカー内で利用可能です。

modeRequest インターフェイスの読み取り専用プロパティで、リクエストのモード(corsno-corssame-originnavigate など)を保持します。これは、オリジン間リクエストに対して有効なレスポンスができるか、またレスポンスのプロパティが読み取り可能かどうかを判定するために使用されます。

特定のモードでのリクエストを構築するには、必要な値を RequestInit.mode オプションにとして Request.Request() コンストラクターに渡します。

特定のモード、特に no-cors を設定すると、使用できるリクエストメソッドやヘッダーに制限がかかり、 JavaScript がレスポンスヘッダーや本体にアクセスできなくなることに注意してください。詳細は RequestInit.mode のドキュメントを参照してください。

以下の値のいずれかです。

same-origin

このモードを設定してほかのオリジンにリクエストをした場合、結果はエラーになります。リクエストが常に同一オリジンに行われることを保証するために使用できます。

no-cors

オリジン間リクエストの CORS を無効にします。レスポンスは不透明となり、ヘッダーと本体は JavaScript では利用できません。

cors

このリクエストがオリジン間リクエストであれば、オリジン間リソース共有 (CORS) の仕組みを使用します。

ナビゲーションに対応しているモードです。 navigate 値は HTML ナビゲーションでのみ使用されることを意図しています。 navigate リクエストは文書内のナビゲーションをするときだけ作成されます。

既定のモード

リクエストは様々な方法で開始されますが、リクエストのモードは、それが開始された具体的な手段によって異なります。

たとえば、 Request オブジェクトが Request() コンストラクターで生成された場合、 mode の値は cors に設定されます。

しかし、リクエストが Request() コンストラクター以外で生成された場合は、ふつう no-cors がモードとして設定されます。たとえば、マークアップから生成された埋め込みリソースのようなリクエストは、 crossorigin 属性が設定されていない限り、 no-corsを利用します。そのようなものの例として、 <link><script> 要素(ただしモジュールを除く)、 <img><audio><video><object><embed><iframe> 要素などが存在します。

以下のスニペットは、 Request() コンストラクターを使って(スクリプトと同じディレクトリーにある画像ファイルのために)新しいリクエストを生成してから、リクエストモードを変数に保存しています。

js
const myRequest = new Request("flowers.jpg");
const myMode = myRequest.mode; // 既定では "cors" を返す

仕様書

Specification
Fetch
# ref-for-dom-request-mode②

ブラウザーの互換性

BCD tables only load in the browser

関連情報