Request.mode
Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。
Request
インターフェースの mode
読み取り専用プロパティは、リクエストのモード(たとえば、cors、
no-cors、
cors-with-forced-preflight、
same-origin
)を含みます。これは、クロスオリジンリクエストに対して有効なレスポンスができるか、またレスポンスのプロパティが読み取り可能かどうかを判定するために使用されます。
構文
var myMode = request.mode;
値
RequestMode
の値は以下のいずれかです。
same-origin
— このモードを設定してほかのオリジンにリクエストをした場合、結果は単純にエラーになります。リクエストが常に同一オリジンに行われることを保証するために使用できます。no-cors
—HEAD か
GET、
POST
以外のメソッドを防ぎます。任意の ServiceWorkers がこれらをインターセプトする場合、シンプルヘッダーを除いてヘッダーを追加したりオーバーライドしたりできなくなります。加えて、JavaScript は解決されたResponse
のプロパティにはアクセスできません。これはServiceWorkers が Web のセマンティクスに影響を与えないことを保証し、ドメインを跨いでデータが流出することでセキュリティやプライバシーの問題が生じるのを防ぎます。cors
— クロスオリジンリクエストを許可します。たとえば、サードパーティベンダーが提供する様々な API にアクセスできます。これらは、CORS プロトコル (en-US)に則ることが期待されています。制限されたヘッダーだけが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