← Cloudflare Waiting Room / waiting-room / additional-options
Vložit do iFrame
Vzhledem k tomu, jak čekárna sleduje postup návštěvníka, musíte zadat určité atributy souboru cookie ke správnému vložení čekárny do iFrame.
Kontext
SameSite atribut cookie ↗ určuje, zda lze tento soubor cookie sdílet s jinými doménami načítanými na stejné stránce (reklamní bannery, iFrame). Prohlížeče ve výchozím nastavení neodesílají cookies u mezidoménových dílčích požadavků, aby útočníkům zabránily v krádeži nebo úpravě informací uložených ve vašich souborech cookie.
Toto chování však může zabránit tomu, aby čekárna uživatele správně zařadila do fronty, pokud je čekárna vložena do iFrame. Čekárna závisí na __cfwaitingroom cookie ke sledování uživatele ve frontě. Protože však prohlížeč ve výchozím nastavení blokuje doručení tohoto souboru cookie čekárně, nemůže aktivní a řadící čekárna uživatele zařadit do fronty a nikdy mu neumožní přístup k aplikaci.
Dostupné možnosti
Chcete-li přizpůsobit, jak čekárna reaguje na soubory cookie, zahrňte cookie_attributes objekt, když vytvoření čekárny (k dispozici pouze přes API).
K dispozici jsou tyto možnosti:
-
samesite: NakonfigurujeSameSiteatribut u souboru cookie čekárny:- auto (výchozí): Má být co nejflexibilnější a ve výchozím nastavení se používá lax ale stává se žádné pokud máte povoleno Always Use HTTPS.
- lax: Soubory cookie se neodesílají při běžných mezidoménových dílčích požadavcích (například při načítání obrázků nebo rámců na webu třetí strany), ale odesílají se, když uživatel přechází na domovský web
- strict: Soubory cookie se budou odesílat pouze v kontextu první strany.
- žádné: Soubory cookie se budou odesílat vždy.
-
secure: NakonfigurujeSecureatribut u souboru cookie čekárny, který vyžaduje, aby byl požadavek odeslán přeshttps:- auto (výchozí): Má být co nejflexibilnější a ve výchozím nastavení se používá nikdy ale stává se vždy pokud máte povoleno Always Use HTTPS.
- vždy: Soubory cookie lze odesílat pouze pomocí
httpspožadavky. - nikdy: Soubory cookie lze odesílat pomocí
httpnebohttpspožadavky.
Povolit průchod souborů cookie přes iFrame
Pokud vkládáte čekárnu do iFrame, zadejte následující hodnoty u cookie_attributes objekt, když vytváření čekárny (k dispozici pouze přes API):
samesite:nonesecure: Pokud máte Always Use HTTPS povoleno, nastavené naauto. Pokud to máte vypnuté, nastavte naalways.
Příklad
Požadavek
Požadovaná oprávnění API tokenu
Alespoň jeden z následujících oprávnění tokenu je povinné: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"
}
}'Odpověď
{
"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"
}
}
]
}Omezení
Hlavní webové prohlížeče zavedly omezení pro cookies třetích stran, což je stejný typ cookies, jaký čekárny používají uvnitř iframe. Waiting Room využívá Cookies Having Independent Partitioned State (CHIPS) ↗ k obejití těchto omezení, existují však určité nevýhody:
- Uživatel, který čekárnu zobrazí jak uvnitř iframe, tak mimo něj, bude považován za dva samostatné uživatele. Každá z těchto instancí může frontu opustit v jiný čas a v analytice se počítá zvlášť.
- Aby bylo možné čekárnu vložit do iframe, musí být vložená i vkládající stránka přístupné přes HTTPS.
- CHIPS nepodporuje Safari ani prohlížeče odvozené od Safari, jako je Orion a většina prohlížečů pro iOS, pokud v nastavení nemají vypnuté blokování cookies třetích stran. Tito uživatelé zůstanou zaseknutí na konci fronty a nebudou moci postoupit, dokud se fronta nevyprázdní, a v analytice se mohou počítat vícekrát.
Obecně platí, že pokud dochází k problému s nastavením nebo načtením cookie čekárny, lze očekávat, že uživatelé zůstanou zaseknutí na konci fronty a v analytice se budou počítat jako více uživatelů.
Tato omezení se nemusí uplatnit, pokud vložená stránka a stránka, do které je vložena, sdílejí společný název domény. Pokud je stránka například na adrese example.com vložení čekárny na shop.example.com mohou prohlížeče považovat za cookies první strany, a nepodléhají tak omezením platným pro cookies třetích stran.