Javascript PWA:为什么只有当URI在PWA的清单中注册时,才能导航到URI

Javascript PWA:为什么只有当URI在PWA的清单中注册时,才能导航到URI,javascript,uwp,progressive-web-apps,Javascript,Uwp,Progressive Web Apps,我已经用Visual Studio 2017创建了基于JavaScript的project Progressive Web应用程序。创建的项目包含一个文件package.appxmanifest。当应用程序启动时,它会导航到URI,该URI在清单中定义为StartPage。此HTML页面包含一个链接,该链接应导航到其他站点 window.location.href = 'other site' 只有当此URI在清单中显式注册为Content URI ApplicationContentUrie

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

window.location.href = 'other site'
只有当此URI在清单中显式注册为Content URI ApplicationContentUries时,此链接才起作用。
是否可以允许所有链接在内容URI中没有条目?

可以在中使用通配符

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

但作为一个整体:

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

因此,尽量减少规则集中预先已知的主机名

来自MS文档:

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

你的规则应该包括你的应用程序的起始页和你想要作为应用程序页面包含的任何其他页面。如果用户导航到未包含在规则中的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>
通常,使用PWAs,您可以在web清单中为服务工作者定义一个范围。然后,如果用户单击在该定义范围内导航的链接,该链接将在PWA窗口中打开。 如果您希望在浏览器选项卡中打开链接,从而在PWA之外打开链接,则必须将target=\u blank添加到锚定标记中

如果你想了解更多关于PWAs和web清单的信息,我写了一篇文章

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

使用PWA创建的UWP应用程序在依赖浏览器的同时,仍然以UWP沙盒应用程序为特色

出现在内容URI中的链接表示该链接是可信的,其子路由可以在UWP窗口中访问。但是,如果访问外部链接,行为将定向到浏览器,浏览器将通过浏览器打开页面

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


致以最诚挚的问候。

你是在模仿别人的行为吗?或者什么?你能发布你的网页清单吗?清单中的定义:通配符不会改变任何东西。单击链接时,边缘浏览器将在应用程序外部打开。