start_url

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

start_url manifest 成员用于指定当用户启动您的 Web 应用程序时(例如,在设备的主屏幕或应用程序列表中点击应用程序图标时)应该打开的 URL。

注意: start_url 是给浏览器的提示。 浏览器在处理 start_url 的方式上具有灵活性,并且不一定始终使用指定的值。

语法

json
/* Absolute URLs */
"start_url": "https://example.com/myapp"
"start_url": "https://myapp.com/home"

/* Relative URLs */
"start_url": "/"
"start_url": "../index.html"

start_url

一个字符串,表示 Web 应用程序的起始 URL。该 URL 可以是绝对的也可以是相对的。如果值为相对值,则相对于 manifest 文件进行解析。

如果 start_url 未指定或值为无效(即,不是字符串、不是有效 URL,或与链接到 manifest 的页面不是 同源),则使用链接到 manifest 的页面的 URL。

注意: 在某些浏览器上,对于 PWA 可安装必须指定 start_url(请参阅下面的兼容性部分)。您可以设置 "start_url": "./" 来在所有浏览器上使用默认行为。

注意: 如果 manifest 中未指定 scope,它将从 start_url(或在值未定义或无效时从有效 start_url)推断出来。

描述

start_url 允许您推荐一个适合所有用户的通用入口点。

当用户安装 Web 应用程序时,安装会从他们当前正在查看的页面进行。在安装过程中,浏览器会获取链接自该页面的 manifest 文件。虽然 manifest 文件可以从任何源提供,但安装过程与启动它的页面相关联。考虑以下场景:

  • 安装页面是 https://myapp.example.com/index.html
  • manifest 文件托管在 https://assets.cdn.com/manifest.json
  • start_urlhttps://myapp.example.com/home

此示例中指定的 start_url 将被使用,因为它与正在安装应用程序的页面同源。如果指定的 start_url 位于不同的源(例如,https://differentapp.example.com/home),浏览器将回退使用安装页面的 URL 作为起始点。这确保了 Web 应用程序只能在自己的源内的页面上启动。

但请注意,浏览器不一定非要使用指定的 URL。它们可能会忽略指定的值,或者提供选项让用户不使用它。它们还可能允许用户在创建 Web 应用程序的书签时或稍后修改 URL。在设计应用程序时,请记住这一点,以便能够适应 start_url 的各种情况。

最佳实践

此 URL 应将用户导航到您应用程序的重要页面,例如仪表板。考虑用户在启动应用程序后希望立即访问的功能。如果您的应用程序的主页位于您站点的根目录,您可以将 start_url 设置为 /。您还可以指定一个深度链接(例如,https://myapp.com/product/whatsnew)来将用户引导至您应用程序内的特定内容。避免指定一个通用的起始页面。

出于安全原因,start_url 必须与 manifest URL 同源。如果指定了非同源的 start_url,浏览器将回退使用链接到 manifest 的页面作为默认起始页面。

隐私注意事项

  • 指纹识别:

    将字符串编码到 start_url 中以唯一标识用户(例如,服务器分配的标识符,如 ?user=123/user/123/https://user123.foo.bar)会创建持久的指纹。用户可能不知道他们的隐私敏感信息即使在清除站点数据后仍然存在。在 start_url 中包含任何可能唯一标识用户的​​信息都是不良做法。

    浏览器可能会提供针对此类指纹的保护。例如,当用户清除某个源的数据时,浏览器可能会提示他们卸载该源范围内的应用程序。这将移除应用程序 start_url 中的任何潜在指纹。

  • 启动跟踪:

    start_url 添加参数以指示应用程序是从浏览器外部启动的(例如,"start_url": "index.html?launcher=homescreen")可能对分析和自定义很有用。但是,此信息可以用作用户数字指纹的一部分。在实现此类跟踪时,请考虑潜在的隐私影响。

示例

指定绝对起始 URL

假设您的徒步旅行 Web 应用程序的 manifest 文件位于 https://hiking-pro.com/resources/manifest.json,并且 https://hiking-pro.com/index.html 链接到该 manifest 文件。您希望用户在启动应用程序时登陆 trail-hub.html 页面。您可以在 manifest 文件中这样指定此起始 URL:

json
{ "start_url": "https://hiking-pro.com/trail-hub.html" }

start_url 值是有效的,因为它与 manifest URL(https://hiking-pro.com/resources/manifest.json)同源。

以下 start_url 是无效的,因为它与 manifest URL 不同源:

json
{ "start_url": "https://other-domain.com/trail-hub.html" }

在上述情况下,当用户启动应用程序时,将使用 https://hiking-pro.com/index.html 作为默认起始页面。

指定相对起始 URL

对于前面场景中的徒步旅行应用程序,您可以使用相对 URL 指定相同的起始点,如下所示。此相对 URL 将根据 manifest 文件(https://hiking-pro.com/resources/manifest.json)解析为 https://hiking-pro.com/trail-hub.html

json
{ "start_url": "../trail-hub.html" }

规范

规范
Web 应用清单
# start_url-member

浏览器兼容性

另见