BRD Widget 8.2 Интеграция виджета партнером

Направление работ: Widget Код раздела: 8.2 Раздел: Общие работы > Интеграция виджета партнером Статус: черновик Ответственный: Панкова Л.А. Версия: 0.1 Обновлено: 11.08.26


1. Назначение

Раздел описывает встраивание виджета партнёром на свой сайт: через iframe по идентификатору виджета или через embed-скрипт, а также ограничение размещения по разрешённым доменам.

Партнёр получает готовые сниппеты для встраивания и размещает виджет на своём сайте. Настройка внешнего вида виджета — раздел 8.2.1.

Документ описывает механизм встраивания. Кастомизация виджета — раздел 8.2.1; открытие по диплинкам — раздел 8.7.3; настройка виджета партнёром в кабинете — WebLk 3.8.

2. Ключевые понятия

Embed-скрипт — скрипт embed.js, который создаёт iframe с виджетом в контейнере на странице партнёра.

iframe — способ встраивания виджета по URL с идентификатором виджета.

Идентификатор виджета (widgetId) — параметр, по которому открывается конкретный виджет партнёра.

Разрешённые домены — список доменов, на которых партнёру разрешено размещать виджет.

3. Scope

Входит

S1: Встраивание виджета через iframe или embed-скрипт

S2: Получение сниппетов встраивания по widgetId

S3: Ограничение размещения по разрешённым доменам

Не входит

  • Widget: 8.2.1 Общие работы > Интеграция виджета партнером > Кастомизация виджета
  • Widget: 8.7.3 Общие работы > Архитектура и инфраструктура > Поддержка диплинков
  • WebLk: 3.8 Инструменты настройка виджета партнёром в кабинете

4. BR

Раздел технический; определяется способом встраивания виджета и связан с настройкой в WebLk: 3.8 Инструменты.

5. Функциональные требования (UC + FR)

FR — functional requirements, что интерфейс должен уметь делать по определенному UC.

IDСценарийФункциональное требованиеBRВесСтатус
S1: #FR8.2-1Партнёр встраивает виджетВиджет встраивается на сайт партнёра через iframe по URL с widgetId или через embed-скрипт embed.js, который создаёт iframe в указанном контейнере.1Реализовано
S2: #FR8.2-2Партнёр получает код встраиванияМетод конфигурации встраивания (embed-config) по widgetId возвращает готовые сниппеты — iframe и скрипт — и параметры встраивания.2Реализовано
S3: #FR8.2-3Виджет размещён на доменеРазмещение ограничивается разрешёнными доменами: на неразрешённом домене виджет показывает сообщение о запрете размещения, а запросы с такого домена отклоняются на стороне сервера.1Частично реализовано — сообщение показывается, серверной блокировки нет, см. OQ8.2-1
S1: #FR8.2-4Страница партнёра взаимодействует с виджетомEmbed-скрипт поддерживает обмен сообщениями с родительской страницей, например изменение высоты iframe.3Реализовано

6. Открытые вопросы

IDИсточникВопросКомуСтатус
#OQ8.2-1КодОграничение по разрешённым доменам проверяется на клиенте (виджет сам определяет домен родителя и показывает запрет), серверной блокировки запросов от неразрешённого домена нет. Подтвердить, достаточно ли клиентской проверки. \ widgets/booking/composables/useLayout.ts:157-183 Уточнено 11.08.26: клиентская проверка не просто «слабее серверной», она обходится тривиально — ограничение применяется только когда виджет открыт в iframe (при !isEmbeddedInFrame() проверка возвращает пустой результат), поэтому прямое открытие URL виджета снимает его полностью. Решение: клиентской проверки недостаточно — требуется серверная проверка: запросы с неразрешённого домена блокируются на бэкенде по Origin/Referer. Клиентская проверка остаётся как способ показать партнёру понятное сообщение, но перестаёт быть единственным барьером. Задача вне репозитория виджета.РазработкаЗакрыт

1 item under this folder.