Request.mode

これは実験的な機能です。本番で使用する前にブラウザー実装状況をチェックしてください。

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

ブラウザ実装状況


Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung Internet
mode
実験的
Chrome 完全対応 42Edge 完全対応 14Firefox 完全対応 39IE 未対応 なしOpera 完全対応 29Safari 未対応 なしWebView Android 完全対応 49Chrome Android 完全対応 49Firefox Android 未対応 なしOpera Android 未対応 なしSafari iOS 未対応 なしSamsung Internet Android 完全対応 5.0
navigate mode
実験的
Chrome 完全対応 49Edge 完全対応 ありFirefox 完全対応 46IE 未対応 なしOpera ? Safari 未対応 なしWebView Android 未対応 なしChrome Android 完全対応 49Firefox Android 未対応 なしOpera Android 未対応 なしSafari iOS 未対応 なしSamsung Internet Android 完全対応 5.0

凡例

完全対応  
完全対応
未対応  
未対応
実装状況不明  
実装状況不明
実験的。動作が変更される可能性があります。
実験的。動作が変更される可能性があります。

関連項目