Настройка и эксплуатация
Клиентская JavaScript-интеграция с маршрутизацией
Клиентский код работает в недоверенной среде, поэтому не должен хранить ключи или принимать решение, которое обязано оставаться серверным.
Ограничьте задачу клиентского слоя
Используйте JavaScript для разрешённого перехода, отображения состояния или передачи публичного контекста, но не для скрытого секрета. Определите, какое решение уже принято сервером и какие действия доступны браузеру.
Не отправляйте реквизиты в браузер
Ключ API, внутренний адрес и административный токен нельзя помещать в пакет, HTML или хранилище клиента. Публичный идентификатор считайте изменяемым пользователем и проверяйте на сервере.
Предусмотрите отключённый и сломанный сценарий
Задайте полезный ответ при запрете JavaScript, сетевой ошибке, блокировщике или неверном решении. Не оставляйте пустой экран и не запускайте бесконечную цепочку повторов.
Контролируйте навигацию и состояние
Проверяйте историю браузера, параметры адреса, cookies, возврат, повторное открытие и две вкладки. Клиентская гонка не должна показывать разные назначения или записывать событие дважды.
Испытайте реальные браузеры
Пройдите мобильный, настольный и встроенный клиент, медленную сеть и отказ зависимости. Сопоставьте видимую страницу, конечный адрес и событие DuckRoute для каждого случая.