Request.mode

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

RequestMode の値です。

mode に関連する値には、次のものが使用できます。

same-origin

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

no-cors

メソッドが HEADGETPOST 以外にならないようにし、ヘッダーが単純ヘッダー以外のものにならないようにします。サービスワーカーがこれらのリクエストに介入した場合、単純ヘッダー以外のヘッダーを追加したり上書きしたりすることはできません。さらに、 JavaScript で結果の Response のプロパティにアクセスすることはできません。これは、サービスワーカーがウェブの意味づけに影響を与えないようにし、ドメイン間でデータが漏れることによって生じるセキュリティとプライバシーの問題を防ぐためです。

cors

オリジン間リクエストを許可します。たとえば、サードパーティベンダーが提供する様々な API にアクセスできます。これらは、CORS プロトコルに則ることが期待されています。制限されたヘッダーしか Response からは見えないようになりますが、本体は読み取り可能です。

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

websocket

WebSocket 接続を確立するときだけ使用される特殊なモードです。

既定のモード

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

たとえば、 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; // returns "cors" by default

仕様書

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

ブラウザーの互換性

BCD tables only load in the browser

関連情報