INTEGRITY Документация

Встраивание в iframe

Из-за того, как зал ожидания отслеживает продвижение посетителей, вам нужно укажите определённые атрибуты cookie чтобы правильно встроить Waiting Room в iframe.

Контекст

SameSite атрибут cookie-файла ↗ определяет, можно ли передавать этот cookie-файл другим доменам, загружаемым на той же странице (рекламные баннеры, iframe). По умолчанию браузеры не отправляют cookie-файлы при межсайтовых подзапросах, чтобы злоумышленники не могли похищать или изменять данные из ваших cookie-файлов.

Однако такое поведение может помешать залу ожидания правильно поставить пользователя в очередь, если этот зал ожидания встроен в iFrame. Зал ожидания зависит от __cfwaitingroom cookie чтобы отслеживать пользователя в очереди. Но поскольку браузер по умолчанию блокирует передачу этого cookie-файла в Waiting Room, активный Waiting Room с очередью не может поставить пользователя в очередь и никогда не пропустит его к приложению.

Доступные варианты

Чтобы настроить, как зал ожидания реагирует на cookie-файлы, добавьте cookie_attributes объект, когда вы создать зал ожидания (доступно только через API).

Доступные варианты:

Разрешить передачу cookie-файлов через iFrame

Если вы встраиваете зал ожидания в iFrame, укажите следующие значения в cookie_attributes объект, когда создание зала ожидания (доступно только через API):

Пример

Запрос

Необходимые разрешения API-токена

Хотя бы одно из следующих права доступа токена требуется:
  • Waiting Rooms Write
Создание зала ожидания
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/waiting_rooms" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"name": "shop_waiting_room",
		"description": "Waiting room for webshop",
		"host": "shop.example.com",
		"path": "/shop",
		"queue_all": true,
		"new_users_per_minute": 200,
		"total_active_users": 300,
		"session_duration": 1,
		"disable_session_renewal": false,
		"json_response_enabled": false,
		"queueing_method": "FIFO",
		"cookie_attributes": {
				"samesite": "none",
				"secure": "auto"
		}
	}'

Ответ

{
  "success": true,
  "errors": [],
  "messages": [],
  "result": [
    {
      "id": "1111111111111111111111",
      "created_on": "2021-01-01T05:20:00.12345Z",
      "modified_on": "2021-01-01T05:20:00.12345Z",
      "name": "shop_waiting_room",
      "description": "Waiting room for webshop",
      "host": "shop.example.com",
      "path": "/shop",
      "queue_all": true,
      "new_users_per_minute": 200,
      "total_active_users": 300,
      "session_duration": 1,
      "disable_session_renewal": false,
      "json_response_enabled": false,
      "queueing_method": "FIFO",
      "cookie_attributes": {
        "samesite": "none",
        "secure": "auto"
      }
    }
  ]
}

Ограничения

Основные веб-браузеры ввели ограничения на сторонние cookie-файлы, и это тот же тип cookie-файлов, который используют залы ожидания, встроенные в iframe. Waiting Room использует Cookies Having Independent Partitioned State (CHIPS) ↗ чтобы обойти эти ограничения, но у этого есть некоторые недостатки:

В целом, если возникает проблема с установкой и получением cookie-файла зала ожидания, следует ожидать, что пользователи будут застревать в конце очереди и учитываться в аналитике как несколько разных пользователей.

Эти ограничения могут не применяться, если встроенная страница и страница, в которую она встроена, используют общее доменное имя. Например, страница по адресу example.com встраивания зала ожидания на shop.example.com может считаться браузерами первой стороной и не подпадать под ограничения на cookie третьих сторон.