启用专用网络功能后,Windows 8.1应用程序WebView无法重定向
Windows 8.1 app WebView cannot redirect with Private Networks capability enabled
我正在编写一个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中获得授权码,然后做我的事情。
- C# WebView 不理解 JavaScript 调用 alert()(Windows 8 XAML 应用程序)
- 示例 WebView 应用程序源代码 Android
- Ionic应用程序的Webview
- 如何使用cocoonjs-webview+构建ionic应用程序
- Chrome应用程序在Webview中的按钮/输入上添加点击事件
- 使用 WebView.loadUrl 执行 javascript 在第一次运行应用程序时不起作用
- 离子应用程序 - 无法获取要在 WebView 中打开的链接
- WebView.InvokeScriptAsync 在通用应用程序中不起作用
- 为什么我的Mac应用程序中的WebView html拒绝加载JQuery或任何外部脚本
- 基于Webview的Android浏览器应用程序中的哪些错误
- 在webview商店应用程序中调用Javascript
- WebView:在外部浏览器中打开,而不是在应用程序中打开
- Android Webview中OpenFileChooser的结果导致应用程序不响应
- 检测和更改Chrome应用程序Webview中src的URL
- 有可能用我的新上下文而不是原始的应用程序上下文来伪造WebView的构造函数吗
- 安卓谷歌地图应用程序vs使用安卓WebView查看网页中嵌入的谷歌地图
- 从webview启动应用程序,如果未安装,则重定向到播放商店
- 通过谷歌Chrome应用程序Webview冒泡通知
- 启用专用网络功能后,Windows 8.1应用程序WebView无法重定向
- Windows 8应用程序- Webview控件(c#).注入JavaScript来改变用户代理字符串