https - 托管 UWP 应用上的渐进式 Web 应用不适用于 HTTPS(自签名)
问题描述
托管在 IIS 上的 PWA Angular 应用程序(使用自签名证书的 HTTPS 绑定)正在由 UWP 应用程序访问(托管的 UWP:只是一个指向 PWA 应用程序的 UWP shell)。
当诸如 StartPage 和 Content URI之类的package.appxmanifest配置指向具有 HTTP 方案的 PWA 时,它运行良好(当然,由于需要 HTTPS,Service Worker 注册会引发错误)。但是,当我将 URL 更新为指向 HTTPS 时,UWP 仅显示一个没有错误的空白白屏(在调试 UWP 时在 VS2017 的 Javascript 控制台上)。
注意:在浏览器中使用 HTTPS 访问 PWA 可以正常工作。仅供参考,使用自签名证书。
简而言之:
PWA+BROWSER+(HTTP OR HTTPS) => OK
PWA+UWP+HTTP => OK
PWA+UWP+HTTPS (Self-Signed) => NG
解决方案
开发 PWA-UWP 时的常见限制:
- 最低 Windows 10 版本:1809(从 EdgeHTML WebView 开始支持 Service Worker)
- 在客户端设备上安装 SSL 证书(如果是自签名)
- 应用 URL 必须以:
https://<DomainName>
(IP 地址不起作用)开头 - 客户端设备必须启用开发者模式(必须允许旁加载应用程序)
警告:如果您计划使用以下 Visual Studio 模板来创建 UWP - PWA: 请注意,应用程序 URL 应在构建应用程序时在 package.appxmanifest 中已知和配置。在我们的案例中,这是不可能的,因为我们正在构建一个本地 PWA。
但是,如果 App URL 是固定的,那么您可以使用 WinJs API 的全部功能。最好的部分是 WinJs API 访问代码可以写在你的 PWA 中,因此你的 UWP 项目只是一个 0 代码的 shell。
推荐阅读
- asp.net-core - 具有多个接口的 ASP.NET Core 多依赖注入
- babeljs - 多个条目 + 带有 rollup 和 rollup-plugin-babel 的 preserveModules - 为什么 _rollupPluginBabelHelpers.js 中不包含所有帮助程序?
- javascript - 使用 javascript 获取鼠标移动方向
- swiftui - SwiftUI UITextView 协调器不起作用
- clojure - Clojure boot-clj中的“RELEASE”是什么意思?
- python - 如何跳过非营业时间向熊猫日期时间添加小时数
- c++ - 为什么 reinterpret_cast 在某些情况下有效,而在其他情况下无效?
- javascript - 如何创建带有可编辑的预填充文本的文本框?
- java - 选择所有具有匹配列名的表
- python - 在Python中将非固定键json转换为csv文件