PWA:为什么仅当 URI 在 PWA 清单中注册时,导航到 URI 才有效



我用Visual Studio 2017创建了基于JavaScript的项目"Progressive Web App"。创建的项目包含一个文件"package.appxmanifest"。当应用启动时,它会导航到 URI,该 URI 在清单中定义为 StartPage。此 HTML 页面包含一个链接,该链接应导航到其他站点。

window.location.href = 'other site'

仅当此 URI 在清单中显式注册为"Content-URI"(ApplicationContentUriRules(时,此链接才有效。
是否可以允许所有链接而不在内容 URI 中输入?

使用PWA 创建的 UWP 应用程序虽然依赖于浏览器,但仍具有 UWP 沙盒应用程序。

Content-URI中显示的链接表示该链接受信任,并且可以在 UWP 窗口中访问其子路由。但是,如果您访问外部链接,该行为将被定向到浏览器,浏览器将通过浏览器打开页面。

可以使用通配符"*"尽可能匹配所需的链接,如内容 URI 页中所述,但这并不意味着允许在 UWP 窗口中访问所有链接。

此致敬意。

来自 MS Docs:

通过 ACUR(也称为 URL 允许列表(,你可以让 PWA 的 URL 直接访问 Windows 运行时 API。在 Windows 操作系统级别,将设置正确的策略边界,以允许 Web 服务器上托管的代码直接调用平台 API。将 PWA 的 URL 指定为 ApplicationContentUriRules 时,可以在应用包清单文件中定义这些边界。

您的规则应包括应用的起始页以及您希望作为应用页面包含的任何其他页面。如果用户导航到规则中未包含的 URL,Windows 将在 Microsoft Edge 浏览器中打开目标 URL,而不是在独立的 PWA 窗口 (WWAHost.exe 进程中打开目标 URL。您还可以排除特定网址。

也许您可以设置一个一般津贴规则(不确定这是否是正确的方法(:

<Application Id="App" StartPage="https://maApp.com/home">
<uap:ApplicationContentUriRules>
<uap:Rule Type="include" Match="https://*.*" WindowsRuntimeAccess="all" />
</uap:ApplicationContentUriRules>

通常,使用 PWA 时,可以在 Web 清单中定义服务辅助角色的范围。然后,如果用户单击在此定义范围内导航的链接,则该链接将在 PWA 窗口中打开。 如果您希望在浏览器选项卡中打开链接(因此在 PWA 之外(,则必须将 target="_blank" 添加到锚标记。

如果你想阅读更多关于PWA和Web清单的信息,我写了一篇关于它的文章。

更新
使用 PWA 时,通常只想在应用范围内导航。如果需要重定向到外部资源/网站,则应在外部浏览器页面中打开目标页面,而不是在 PWA 范围内打开。因此,目前的行为对我来说似乎是正确的。

可以在规则中使用通配符。

例如:http://*.mydomain.com/pwa/*/content

但正如一位戴夫所说:

但是,应用商店对提交使用 http://* 规则或第二个有效域中带有星号的规则 名称标签。例如,http://*.com 也仅限于应用商店。

因此,请尝试减少预先知道的主机名的规则集。

最新更新