プライベート ネットワーク アクセスとは何ですか?
プライベート ネットワーク アクセス(PNA、旧称 CORS-RFC1918、略称ローカル ネットワーク アクセス)は、ウェブサイトが限定公開ネットワーク上のサーバーにリクエストを送信する機能を制限するセキュリティ機能です。これにより、クロスサイト リクエスト フォージェリ(CSRF)などの潜在的な攻撃からユーザーと内部ネットワークを保護できます。Chrome では PNA が段階的に実装されており、今後のリリースで保護機能が拡大される予定です。
主な PNA 保護(現在のステータスを含む)
- セキュア コンテキスト: プライベート ネットワークのサブリソース リクエストを送信できるのは、セキュア コンテキストのみです(Chrome 94 で適用)。詳細については、プライベート ネットワーク アクセスの最新情報に関する投稿をご覧ください。
- プリフライト リクエスト: Chrome は、限定公開ネットワークのサブリソース リクエストの前にプリフライト リクエストを送信して、サーバー権限を確認します(Chrome 104 以降、失敗した場合は DevTools に警告が表示され、Chrome 130 で適用されます)。この点については、プライベート ネットワーク アクセス: プリフライトの導入で説明しています。Chrome 123 以降、PNA が原因でプリフライトが作成されて送信される場合、Chrome は
Accept
などの一部の CORS ヘッダーを省略します。 - 同一オリジンの例外: Chrome 115 以降、信頼できる可能性のあるオリジンからの同一オリジン リクエストは PNA の制限の対象外です。
保護の拡大: ウェブ ワーカー
PNA 保護は、ウェブワーカー(専用ワーカー、共有ワーカー、サービス ワーカー)に拡大されます。これには以下が該当します。
- ワーカー スクリプトの取得: 一般公開されていない IP アドレスには、安全なコンテキストとプリフライトが必要です。Chrome 110 以降で警告が表示され、Chrome 130 で適用されます。
- ワーカー スクリプトによって開始されたフェッチ: ワーカー スクリプト内からのすべてのフェッチは、同じ PNA ルールに従います。
Chrome 124 以降では、次の手順で適用をテストできます。
chrome://flags/#private-network-access-ignore-worker-errors
を無効にするchrome://flags/#private-network-access-respect-preflight-results
を有効にする
保護の拡張: ナビゲーションの取得
PNA は、CSRF 攻撃で使用される可能性があるため、ナビゲーション取得(iframe、ポップアップ)にも適用されます。Chrome 123 でエラーの警告が表示されるようになり、Chrome 130 で違反措置が適用される予定です。
Chrome 124 以降では、次の方法で違反措置をテストできます。
chrome://flags/#private-network-access-ignore-navigation-errors
を無効にするchrome://flags/#private-network-access-respect-preflight-results
を有効にする
PNA がナビゲーション リクエストをブロックすると、ユーザーに特定のエラーが表示され、手動で再読み込みしてリクエストを許可するオプションが表示されます。

ウェブサイトが影響を受けている場合の対処方法
プライベート ネットワーク アクセス: プリフライトの導入の投稿にガイダンスが記載されています。ナビゲーション リクエストの場合、次のことを注意してください。
Access-Control-Allow-Origin
はワイルドカード("*"
)にすることはできません。Access-Control-Allow-Credentials
は"true"
に設定する必要があります。
次のステップ
- WebSockets: Chrome 126 で試験運用を開始し、PNA で WebSocket handshake を対象にします(最初は警告)。
- 完全な適用: PNA のすべての制限が Chrome 130 で暫定的に適用されます(準拠していないリクエストはブロックされます)。ユーザーは、信頼できるサイトに対して PNA をオーバーライドするサイト設定を行うことができます。
プライベート ネットワークのユースケースに関するフィードバック
パブリック ネットワークからのリクエストを必要とするプライベート ネットワーク上にウェブサイトをホストしている場合は、Chrome チームにフィードバックをお寄せください。Chromium Issue Tracker で問題を報告します(コンポーネント: Blink> SecurityFeature> CORS> PrivateNetworkAccess)。
写真: Jakub Żerdzicki(Unsplash)