启用专用网络功能后,Windows 8.1应用程序WebView无法重定向

Windows 8.1 app WebView cannot redirect with Private Networks capability enabled

本文关键字:应用程序 WebView 重定向 Windows 专用网 专用 网络 功能 启用      更新时间:2023-09-26

我正在编写一个Windows 8.1应用程序,该应用程序访问带有OAUTH的REST API。我使用x-ms-webview控件显示了登录信息。自从我实现它以来,它一直运行良好。

现在,我需要从他们的生产服务器切换到他们的开发服务器,开始添加一些新功能。授权工作原理相同,但生产服务器是公开可用的,而开发服务器只能在公司内部网上访问。

尝试访问开发服务器会导致Windows阻止请求,除非我将"专用网络(客户端和服务器)"添加到package.appxmanifest中的应用程序功能中。这很好,但当启用该功能时,授权无法正确重定向,我会看到一个空白屏幕。

奇怪的是,当启用"专用网络"时,生产服务器也会出现同样的问题(尽管它是一个可公开访问的服务器)。然而,在提供给localhost的页面上加载相同的标记将正确重定向。如果WebView托管在本地或外部(无论是intranet还是internet),则其反应必须不同。有人知道WebView行为相对于"专用网络"标志的变化,以及我如何访问intranet站点吗?

我怀疑Windows正在阻止重定向,因为可能存在代理。有了内联网访问,即使应用程序的功能中没有启用代理,你也可以设置一个访问更大互联网的代理。但是,我确实启用了"Internet(客户端)"功能,所以这不是一个安全问题。

有人知道如何绕过这个问题吗?

在经历了很多痛苦之后,我发现WebView没有遵循重定向的原因是重定向到localhost(授权代码在URL的查询参数中)。显然,当"专用网络(客户端和服务器)"启用时,Windows拒绝访问localhost。我不完全理解为什么应用程序不能访问localhost,但显然Windows立即拒绝了这些连接1

@Microsoft:Visual Studio在我尝试连接intranet时发出警告,告诉我Windows主动拒绝连接,因为我没有启用"专用网络(客户端和服务器)",我能够在几秒钟内解决这个问题。如果你做了同样的事情,只说"Windows拒绝连接到本地主机,因为‘专用网络(客户端和服务器)’已启用",你本可以为我节省两周的时间。有没有原因没有发生/rant

我可以通过让服务器重定向到自己域上的404页面而不是本地主机来解决这个问题。Windows接受了这个连接,我就可以从URL中获得授权码,然后做我的事情。