Request.mode

Experimental

これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。

Request インターフェースの mode 読み取り専用プロパティは、リクエストのモード(たとえば、cors、no-cors、cors-with-forced-preflight、same-origin)を含みます。これは、クロスオリジンリクエストに対して有効なレスポンスができるか、またレスポンスのプロパティが読み取り可能かどうかを判定するために使用されます。

構文

var myMode = request.mode;

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

  • same-origin — このモードを設定してほかのオリジンにリクエストをした場合、結果は単純にエラーになります。リクエストが常に同一オリジンに行われることを保証するために使用できます。
  • no-corsHEAD か GET、POST 以外のメソッドを防ぎます。任意の ServiceWorkers がこれらをインターセプトする場合、シンプルヘッダーを除いてヘッダーを追加したりオーバーライドしたりできなくなります。加えて、JavaScript は解決された Response のプロパティにはアクセスできません。これはServiceWorkers が Web のセマンティクスに影響を与えないことを保証し、ドメインを跨いでデータが流出することでセキュリティやプライバシーの問題が生じるのを防ぎます。
  • cors — クロスオリジンリクエストを許可します。たとえば、サードパーティベンダーが提供する様々な API にアクセスできます。これらは、CORS プロトコルに則ることが期待されています。制限されたヘッダーだけが Response で使用できますが、body は読み取り可能です。
  • navigate — ナビゲーションを許可します。navigate はHTMLナビゲーションによってのみ利用されることを意図しています。ナビゲーションリクエストはドキュメント間のナビゲーションの場合にだけ生成されます。

デフォルトのmode

リクエストは様々な方法で初期化されますが、modeの値はその方法によって変わります。

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

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

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

var myRequest = new Request('flowers.jpg');
var myMode = myRequest.mode; // 既定で "cors" を返す。

仕様

仕様 状態 コメント
Fetch
mode の定義
現行の標準 Initial definition

ブラウザ実装状況

BCD tables only load in the browser


関連項目