デフォルトでは、UWP アプリは同じマシン上のネットワーク リソースにアクセスできません。この制限は、CheckNetIsolation.exe
ユーティリティを使用してアプリごとに解除できます。これは、Web 上の多くの場所で説明されています。
https://stackoverflow.com/questions/34589522/cant-see-localhost-from-uwp-app https://docs.microsoft.com/en-us/windows/uwp/debug-test-perf/deploying-and-debugging-uwp-apps#debugging-options
ループバック免除は、UWP アプリに個別に付与できます。私の使用例では、localhost で実行されているシステム全体のプロキシ サーバーを使用したいと思います (インターネット オプション -> 接続 -> ローカル エリア ネットワーク (LAN) の設定 -> プロキシ サーバー)。つまり、すべての UWP アプリにループバック免除を付与する必要があります。そうしないと、アプリはインターネットにまったくアクセスできなくなります。
すべての UWP アプリにループバック免除を付与するのではなく、サーバー側で何かを実行してこのネットワーク分離を回避する方法はありますか?
たとえば (まだ試していませんが)、コンピューター上で仮想マシンを実行し、仮想マシン内でプロキシ サーバーを実行すると、プロキシ サーバーがループバック インターフェイスをリッスンしていないため、UWP アプリがプロキシ サーバーに接続できるようになると思います。同様に機能する他の方法やハックはありますか?
試してみたがうまくいかなかったこと:
- プロキシ サーバーを 127.0.0.1 ではなく 127.0.0.0/8 の別の IP アドレスにバインドする
- Microsoft ループバック アダプターを追加し、IP アドレスを割り当て、プロキシ サーバーをそのアドレスにバインドする
答え1
実際には、すべてのアプリに免除を付与したり、サーバーを別の (実際のまたは仮想の) マシンで実行したりしなくても、ネットワークのトリックを使用して、ローカルホスト サーバーが別のシステムで実行されているように見せるという方法があります。
WinDivert フレームワークを使用してソリューションを実装しました。つまり、指定された「リフレクト アドレス」宛てのネットワーク パケットをローカルホストに「リフレクト」し、ローカルホストで実行されているサーバーにリフレクト アドレスでアクセスできるようにします。これにより、UWP アプリは自由にサーバーにアクセスできます。
ネットワーク パケットをフィルタリングおよび挿入できる他のテクノロジを使用して、同様のソリューションを実装できるはずです。