scope_extensions

實驗性: 這是一項實驗性技術
在生產中使用此技術之前,請仔細檢查瀏覽器相容性表格

scope_extensions 清單成員用於將 Web 應用的範圍擴充套件到包含其他源。這允許將多個域呈現為一個 Web 應用。

語法

json
"scope_extensions": [
  { "type": "origin", "origin": "https://support.example.com"},
  { "type": "origin", "origin": "https://shop.example.com"},
  { "type": "origin", "origin": "https://example.de"},
  { "type": "origin", "origin": "https://example.co.uk"}
]

scope_extensions

一個包含以下屬性的物件的陣列

type

定義範圍擴充套件型別的字串。目前始終是 origin,但將來可能會新增其他型別。

origin

代表 Web 應用希望擴充套件其範圍的源的字串。

描述

scope_extensions 清單成員可以擴充套件 Web 應用的範圍以包含其他源。典型用例包括:

  • 用於內容或功能的不同子域,例如 https://support.example.comhttps://shop.example.comhttps://maps.example.comhttps://auth.example.com
  • 用於語言/地區的不同子域,例如 https://uk.example.comhttps://de.example.comhttps://jp.example.comhttps://no.example.com
  • 相關的獨立域,例如 https://example.jphttps://my-example.comhttps://my-partner-site.comhttps://example.slack.com

主 Web 應用(例如 https://example.com)需要在其 scope_extensions 清單成員中包含其希望包含在其範圍內的源。

json
{
  "scope_extensions": [
    { "type": "origin", "origin": "https://example.jp" },
    { "type": "origin", "origin": "https://my-example.com" },
    { "type": "origin", "origin": "https://my-partner-site.com" },
    { "type": "origin", "origin": "https://example.slack.com" }
  ]
}

透過 .well-known 檔案選擇加入

要選擇加入關聯,在 Web 應用的 scope_extensions 清單成員中指定為範圍內的站點的源需要在相對 URL /.well-known/web-app-origin-association 處包含一個名為 web-app-origin-association.well-known 檔案。這必須包含一個 JSON 結構,其中包含一個或多個屬性,這些屬性的鍵等於該站點選擇加入範圍的每個 Web 應用的 id 清單成員。

例如

json
{
  "https://example.com": {
    "scope": "/"
  },
  "https://beta.example.com": {
    "scope": "/"
  }
}

每個屬性的值是一個物件,其中包含一個 scope 屬性,其值指定將包含在引用 Web 應用範圍內的確切路徑。

注意:無法為同一個 Web 應用指定不同的範圍 — 您不能為同一個鍵包含多個條目。

scope_extensions 的效果

一旦 Web 應用的 scope_extensions 中包含的源成功選擇加入,您就可以連結到這些源範圍內的位置,並且當點選連結時,這些位置將顯示在應用視窗中,與位於 Web 應用自身範圍內的位置一樣。

如果您點選連結到不在 Web 應用範圍內的位置,它將按預期顯示為外部位置。

示例

以位於 https://example.com/app 的示例 Web 應用為例

json
{
  "id": "https://example.com/app",
  "name": "My App",
  "icons": [
    {
      "src": "icon/hd_hi",
      "sizes": "128x128"
    }
  ],
  "start_url": "/app/index.html",
  "scope": "/app",
  "display": "standalone",
  "scope_extensions": [
    { "type": "origin", "origin": "https://example.co.uk" },
    { "type": "origin", "origin": "https://help.example.com" }
  ]
}

為了選擇加入該應用的範圍,https://example.co.ukhttps://help.example.com 需要包含一個如下所示的 /.well-known/web-app-origin-association 檔案。

json
{
  "https://example.com/app": {
    "scope": "/"
  }
}

規範

規範
清單孵化
# scope_extensions 成員

瀏覽器相容性

另見