Создание списка операторов

Утверждения размещаются в списке утверждений в формате JSON в известном месте на основном объекте, как определено в спецификации Asset Links Specification . Список утверждений содержит одно или несколько утверждений, и у основного объекта может быть только один список утверждений.

Синтаксис списка операторов

См. синтаксис списка операторов .

местоположение списка выписок

Список выписок размещается в известном месте, которое зависит от типа субъекта (веб-сайт или приложение, предоставляющее выписки).

На веб-сайте размещены списки заявлений.

На веб-сайте список утверждений представляет собой текстовый файл, расположенный по следующему адресу:

scheme :// domain /.well-known/assetlinks.json

Обратите внимание на точку в названии папки .well-known.

Любой ответ от сервера, кроме HTTP 200 , рассматривается как ошибка и приводит к пустому списку запросов. Для HTTPS любое соединение без цепочки сертификатов, которую можно проверить с помощью списка доверенных корневых сертификатов, также приводит к пустому списку запросов.

Пример

Вот пример списка операторов на веб-сайте: http://example.digitalassetlinks.org/.well-known/assetlinks.json

Список заявлений приложения Android

В приложении для Android список операторов представляет собой фрагмент JSON с тем же синтаксисом, что и файл операторов веб-сайта, но он встроен в файл strings.xml и указан в манифесте, как показано далее.

В файле AndroidManifest.xml:

<manifest>
  <application>
    ...
    <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
    ...
  </application>
</manifest>

В файле res/values/strings.xml:

<resources>
  ...
  <string name="asset_statements">
    ... statement list ...
  </string>
</resources>

Пример

Вот пример фрагмента файла res/values/strings.xml для Android-приложения, поддерживающего обмен данными о местоположении с приложением (функция Android в настоящее время не поддерживается):

<resources>
    ...
    <string name="asset_statements">
      [{
        \"relation\": [\"delegate_permission/common.share_location\"],
        \"target\": {
          \"namespace\": \"web\",
          \"site\": \"https://example.com\"
        }
      }]
    </string>
</resources>

Сопоставление с целью

Каждое утверждение относится к целевому объекту . При обработке утверждения необходимо сопоставить целевой объект в утверждении с каким-либо реальным объектом. Если целевой объект в утверждении совпадает с объектом, утверждение применяется. Вот правила определения соответствия целевого объекта заданному объекту:

Целевые аудитории веб-сайта

Для веб-сайта схема сайта, хост и порт должны точно совпадать. Порты по умолчанию для HTTP и HTTPS (80 и 443 соответственно) предполагаются неявно; если в целевом запросе указано http://www.example.com:80, то веб-сайт http://www.example.com считается соответствующим.

Пример

Учитывая следующее целевое утверждение

"target": {
  "namespace": "web",
  "site": "https://www.google.com"
}

Следующие URI будут соответствовать условию:

  • https://www.google.com/
  • https://www.google.com:443/
  • https://www.google.com/foo
  • https://www.google.com/foo?bar
  • https://www.google.com/foo#bar
  • https://user@password:www.google.com/

Следующие URL-адреса НЕ будут совпадать:

  • http://www.google.com/ ( Неправильная схема )
  • https://google.com/ ( Имя хоста не совпадает )
  • https://www.google.com:444/ ( Порт не совпадает )

Целевые приложения

Для приложения хэш сертификата и имя пакета целевого объекта должны точно совпадать с данными приложения.