web-dev-qa-db-ja.com

Microsoft Edgeが、同じプライベートネットワークCIDRのIPに送信されたクロスドメインリクエストをブロックしました

$.ajax({
    url: "http://10.13.22.150/req_path",
    success: function(result){
        console.log(result);
    }
});

プライベートドメインのIPアドレスにクロスドメインXMLHttpRequestを送信したいのですが。ただし、開発者ツールコンソールには次のエラーが表示されます。

SCRIPT7002:XMLHttpRequest:ネットワークエラー0x2efd、エラー00002efdが原因で操作を完了できませんでした。

Wiresharkによると、パケットはクライアント側から送信されません。 Microsoft Edgeによって要求がブロックされていると思います。さらに、XMLHttpRequestのURLとEdgeクライアントがプライベートネットワークの同じCIDRにある場合にのみ、要求がブロックされることがわかりました。

Client IP             Request URL            Result
192.168.x.x  send to  192.168.x.x   ->>>>>   X
10.13.x.x    send to  10.13.x.x     ->>>>>   X
10.13.x.x    send to  192.168.x.x   ->>>>>   O

IE11などの他のブラウザー/ Chrome/Firefoxは正常に動作します。この状況はMicrosoft Edgeでのみ表示されます。この問題に関する回避策または解決策はありますか?

11
Hsiao

から 拡張保護モードについて

プライベートネットワークリソース

EPMはprivateNetworkClientServer機能を宣言しないため、イントラネットリソースは多くの種類のクロスゾーン攻撃(通常は「クロスサイトリクエストフォージェリ(CSRF)」および「イントラネットポートスキャン」と呼ばれます)から保護されています。インターネットページは使用できません。イントラネットページのフレーミング、ページからの画像やリソースの読み込み、CORS XHRリクエストの送信など。

上記のすべてがMS Edgeに適用されるようです。 Edgeに欠けている唯一のもの(少なくとも現時点ではv20.10240)は、セキュリティゾーンの設定です。

私の問題はXMLHttpRequestではなく、インターネットページ内のiframeにイントラネットページを読み込もうとしたことです。回避策には、ネットワーク設定の変更が含まれていました-参照 https://stackoverflow.com/a/32828629

7
beluga