このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

Request: targetAddressSpace プロパティ

利用可能性は限定的

この機能はベースラインではありません。最も広く使用されているブラウザーの一部で動作しません。

Want more browser support for this feature? Tell us why.

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

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

targetAddressSpaceRequest インターフェイスの読み取り専用プロパティで、リクエストのターゲットアドレス空間を返します。これにより、そのリクエストがループバック、ローカル、パブリックのどれを意図しているかが示されます。

列挙値で、以下のいずれかです。

local

このリクエストはローカルアドレス宛てのものであり、ローカルネットワーク上でのみアクセス可能です。その対象はネットワークによって異なります。例えば、192.168.0.1などです。

loopback

このリクエストはループバックアドレス宛てのものであり、ローカル端末上でのみアクセス可能です。その対象は端末ごとに異なります。例えば、一般に localhost として知られる 127.0.0.1 などです。

public

このリクエストは、インターネット上のどこからでも利用できるアドレス宛てに行われ、その対象は世界中のすべての端末で同じです。例えば、104.18.27.120example.com の IP アドレス)などです。

unknown

リクエストに targetAddressSpace を設定していませんでした。

解説

ローカルネットワークアクセス仕様に対応するブラウザーでは、ループバックリクエストとローカルリクエストは、それぞれ local-network および loopback-network という特定の権限によって制御されます。このようなリクエストにユーザーの権限を要求することで、ルーターやプリンターなどのローカルネットワーク端末に対するクロスサイトリクエストフォージェリー (CSRF) 攻撃のリスクを軽減し、サイトがこれらのリクエストを使用してユーザーのローカルネットワークをフィンガープリンティングする可能性を縮小することができます。

これらの権限は、保護されたコンテキストに限定されています。これらの権限が付与されると、ローカルネットワークへのリクエストに対して、混在コンテンツのブロックがさらに緩和されます。これは、多くのローカル端末が、さまざまな理由で公的に信頼された TLS 証明を取得できないため、必要な措置です。例えば、これにより、公開されているウェブサイトが、HTTP で動作しているローカルのテストサーバーや端末にアクセスできるようになります。

targetAddressSpace プロパティを、新しいリクエスト(Request() コンストラクターで、または fetch() メソッド内で直接)で local または loopback に設定すると、対応するブラウザーでは、混在コンテンツのチェックをスキップするよう明示的に指示します。これは、URL が公開ドメインのアドレスであるものの、実際には http://internal.example.com のようにローカルネットワークのアドレスに解決されてしまう場合などに必要となります。

プライベート IP リテラル(例えば 192.168.0.1)や .local アドレス(例えば http://router.local)など、一部のアドレスについては、ローカルネットワークへのアクセス権限が付与されている場合、混在コンテンツチェックが緩和されるため、targetAddressSpace プロパティを設定する必要はありません。ただし、ローカルネットワークへのアクセス権限が付与されていない場合は、targetAddressSpace が設定されているかどうかにかかわらず、混在コンテンツのチェックが引き続き適用されます。

基本的な使い方

js
const req = new Request("http://localhost:8888", {
  method: "get",
  mode: "cors",
  targetAddressSpace: "loopback",
});

console.log(req.targetAddressSpace);
// loopback

fetch(req);

仕様書

仕様書
Local Network Access
# dom-request-targetaddressspace

ブラウザーの互換性

関連情報