INTEGRITY Dokumentace

Konfigurace widgetů

Vzhled, chování i funkce widgetu Turnstile nastavíte pomocí data atributů nebo parametrů renderování v JavaScriptu.

Způsoby vykreslení

Widgety Turnstile lze implementovat pomocí implicitního nebo explicitního vykreslování.

Implicitní vykreslování automaticky prohledá vaše HTML a najde prvky s cf-turnstile a při načtení stránky vykreslí widget. Hodí se pro jednoduché implementace, statické weby nebo situace, kdy chcete, aby se widget zobrazil hned po načtení stránky.

Jak to funguje

  1. Přidejte na stránku skript Turnstile.
  2. Vložte <div class="cf-turnstile" data-sitekey="your-key"></div> elementy.
  3. Widgety se vykreslí automaticky při načtení stránky.
  4. Nastavte widget pomocí data-* atributy na HTML elementu.
Příklad
	<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
	<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-theme="light"></div>

Explicitní vykreslování vám dává programovou kontrolu nad tím, kdy a jak se widgety vytvářejí pomocí funkcí JavaScriptu. Hodí se pro dynamické weby a jednostránkové aplikace (SPA), když potřebujete řídit načasování vzniku widgetu, vykreslovat widget podmíněně podle akcí návštěvníka nebo použít více widgetů s odlišnou konfigurací.

Jak to funguje

  1. Přidejte skript Turnstile s ?render=explicit .
  2. Vytvořte kontejnerové prvky (bez cf-turnstile třídu).
  3. Zavolejte turnstile.render() ve chvíli, kdy chcete widgety vytvořit.
  4. Nastavte widget pomocí parametrů v objektu JavaScriptu.
Příklad
	<script src="https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit" defer></script>
	<div id="my-widget"></div>
	
	<script>
	window.onload = function() {
		turnstile.render('#my-widget', {
			sitekey: '<YOUR-SITE-KEY>',
			theme: 'light',
			callback: function(token) {
				console.log('Success:', token);
			}
		});
	};
	</script>

Velikosti widgetu

V režimech Managed a Non-Interactive může mít widget Turnstile dvě různé pevné velikosti nebo pružnou šířku.

Velikost Šířka Výška Případ použití
Normal 300px 65px Standardní implementace
Flexibilní 100% (min: 300px) 65px Responzivní design
Compact 150px 140px Rozvržení s omezeným prostorem
Velikost Normal (výchozí)
	<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>"></div>
Flexibilní velikost
	<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-size="flexible"></div>
Velikost compact
	<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-size="compact"></div>
Velikost Normal (výchozí)
	turnstile.render('#widget-container', {
		sitekey: '<YOUR-SITE-KEY>'
	});
Flexibilní velikost
	turnstile.render('#widget-container', {
		sitekey: '<YOUR-SITE-KEY>',
		size: 'flexible'
	});
Velikost compact
	turnstile.render('#widget-container', {
		sitekey: '<YOUR-SITE-KEY>',
		size: 'compact'
	});

Možnosti motivu

Přizpůsobte vzhled widgetu designu svého webu.

Automatický motiv (výchozí)
	<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>"></div>
Světlý motiv
	<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-theme="light"></div>
Tmavý motiv
	<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-theme="dark"></div>
Automatický motiv (výchozí)
	turnstile.render('#widget-container', {
		sitekey: '<YOUR-SITE-KEY>'
	});
Světlý motiv
	turnstile.render('#widget-container', {
		sitekey: '<YOUR-SITE-KEY>',
		theme: 'light'
	});
Tmavý motiv
	turnstile.render('#widget-container', {
		sitekey: '<YOUR-SITE-KEY>',
		theme: 'dark'
	});

Režimy vzhledu

Pomocí režimu appearance určete, kdy se widget návštěvníkům zobrazí.

Vždy viditelný (výchozí)
	<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>"></div>
Viditelný až po zahájení výzvy
	<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-appearance="execute"></div>
Viditelný jen tehdy, když je potřeba interakce
	<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-appearance="interaction-only"></div>
Vždy viditelný (výchozí)
	turnstile.render('#widget-container', {
		sitekey: '<YOUR-SITE-KEY>'
	});
Viditelný až po zahájení výzvy
	turnstile.render('#widget-container', {
		sitekey: '<YOUR-SITE-KEY>',
		appearance: 'execute'
	});
Viditelný jen tehdy, když je potřeba interakce
	turnstile.render('#widget-container', {
		sitekey: '<YOUR-SITE-KEY>',
		appearance: 'interaction-only'
	});

Režimy spouštění

Určete, kdy se výzva spustí a kdy se vygeneruje token.

Automatické spuštění (výchozí)
	<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>"></div>
Ruční spuštění
	<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-execution="execute"></div>
Automatické spuštění (výchozí)
	turnstile.render('#widget-container', {
		sitekey: '<YOUR-SITE-KEY>'
	});
Ruční spuštění
	turnstile.render('#widget-container', {
		sitekey: '<YOUR-SITE-KEY>',
		execution: 'execute'
	});
Spuštění výzvy později
	turnstile.execute('#widget-container');

Nastavení jazyka

Nastavte jazyk rozhraní widgetu.

Automatický jazyk (výchozí)
	<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>"></div>
Konkrétní jazyk
	<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-language="es"></div>
Jazyk a země
	<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-language="en-US"></div>
Automatický jazyk (výchozí)
	turnstile.render('#widget-container', {
		sitekey: '<YOUR-SITE-KEY>'
	});
Konkrétní jazyk
	turnstile.render('#widget-container', {
		sitekey: '<YOUR-SITE-KEY>',
		language: 'es'
	});

Nastavení callbacků

Zpracujte události widgetu pomocí callbacků.

Callback pro úspěch dostane token, který musíte ověřit na svém serveru přes Siteverify API. Tokeny jsou jednorázové a vyprší po 300 sekundách (pěti minutách).

	<div class="cf-turnstile"
		data-sitekey="<YOUR-SITE-KEY>"
		data-callback="onSuccess"
		data-error-callback="onError"
		data-expired-callback="onExpired"
		data-timeout-callback="onTimeout"></div>
	<script>
	function onSuccess(token) {
	console.log('Challenge Success:', token);
	}
	function onError(errorCode) {
	console.log('Challenge Error:', errorCode);
	}
	function onExpired() {
	console.log('Token expired');
	}
	function onTimeout() {
	console.log('Challenge timed out');
	}
	</script>
	turnstile.render('#widget-container', {
		sitekey: '<YOUR-SITE-KEY>',
		callback: function(token) {
			console.log('Challenge Success:', token);
		},
		'error-callback': function(errorCode) {
			console.log('Challenge Error:', errorCode);
		},
		'expired-callback': function() {
			console.log('Token expired');
		},
		'timeout-callback': function() {
			console.log('Challenge timed out');
		}
	});

Doporučené postupy


Pokročilé možnosti konfigurace

Chování při opakování

Nastavte, jak má Turnstile řešit neúspěšné ověřovací výzvy.

Automatické opakování (výchozí)
<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>"></div>
Vypnutí opakování
<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-retry="never"></div>
Vlastní interval opakování (výchozí 8000ms)
<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-retry-interval="0000"></div>

Chování při obnovování

Nastavte, jak má Turnstile řešit vypršení platnosti tokenu a časové limity interaktivní výzvy.

Přínosy

Pro vypršení platnosti tokenu a pro časové limity interaktivní výzvy můžete zvolit různé strategie podle toho, jaké prostředí chcete návštěvníkům nabídnout.

Automatická obnova vypršených tokenů (výchozí)
<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>"></div>
Ruční obnovení
<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-refresh-expired="manual"></div>
Automatická obnova po vypršení časového limitu (výchozí pro režim Managed)
<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-refresh-timeout="auto"></div>

Vlastní data

Přidejte ke svým výzvám vlastní identifikátory a data.

Případy použití

Přidání vlastního identifikátoru akce
<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-action="login"></div>
Přidání vlastních dat
<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-cdata="user-cdata"></div>

Integrace do formuláře

Nastavte, jak se Turnstile propojí s HTML formuláři.

Když je tato možnost zapnutá, Turnstile automaticky vytvoří skrytý prvek <input> element s ověřovacím tokenem. Odešle se spolu s ostatními daty formuláře, takže validace na serveru je přímočará.

Přínosy

Vlastní název pole s odpovědí
<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-response-field-name="turnstile-token"></div>
Vypnutí pole s odpovědí
<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-response-field="false"></div>

Úplný přehled konfigurace

Parametry vykreslení v JavaScriptu Datový atribut Popis
sitekey data-sitekey Každý widget má sitekey. Ten je svázaný s konfigurací daného widgetu a vzniká při jeho vytvoření.
action data-action Zákaznická hodnota, která v analytice slouží k odlišení widgetů pod stejným sitekey a která se vrátí při ověření. Může obsahovat nejvýše 32 alfanumerických znaků včetně _ a -.
cData data-cdata Zákaznická data, která lze k výzvě připojit po celou dobu jejího vydání a která se vrátí při ověření. Mohou obsahovat nejvýše 255 alfanumerických znaků včetně _ a -.
callback data-callback Zpětné volání JavaScriptu, které se vyvolá po úspěšném vyřešení výzvy. Předá se mu token, který lze ověřit.
error-callback data-error-callback Zpětné volání JavaScriptu, které se vyvolá při chybě (například chybě sítě nebo neúspěšné výzvě). Přečtěte si Chyby na straně klienta.
execution data-execution Execution určuje, kdy se získá token widgetu, a může být nastavené na render (výchozí) nebo při execute. Viz Režimy spouštění s dalšími informacemi.
expired-callback data-expired-callback Zpětné volání JavaScriptu, které se vyvolá po vypršení platnosti tokenu a widget neresetuje.
before-interactive-callback data-before-interactive-callback Zpětné volání JavaScriptu, které se vyvolá předtím, než výzva přejde do interaktivního režimu.
after-interactive-callback data-after-interactive-callback Zpětné volání JavaScriptu, které se vyvolá, když výzva opustí interaktivní režim.
unsupported-callback data-unsupported-callback Zpětné volání JavaScriptu, které se vyvolá, když Turnstile daného klienta nebo prohlížeč nepodporuje.
theme data-theme Motiv widgetu. Může nabývat těchto hodnot: light, dark, auto.

Výchozí hodnota je auto, které respektuje předvolbu návštěvníka. Odpovídajícím nastavením motivu lze vynutit light nebo dark.
language data-language Jazyk, který se má zobrazit. Musí jít o jednu z hodnot: auto (výchozí), kdy se použije jazyk zvolený návštěvníkem, nebo dvoupísmenný kód jazyka podle ISO 639-1 (například en) nebo kód jazyka a země (například en-US). Viz seznam podporovaných jazyků s dalšími informacemi.
tabindex data-tabindex Hodnota tabindex u iframu Turnstile z důvodu přístupnosti. Výchozí hodnota je 0.
timeout-callback data-timeout-callback Zpětné volání JavaScriptu, které se vyvolá, když je zobrazena interaktivní výzva a návštěvník ji ve stanoveném čase nevyřeší. Zpětné volání widget resetuje, aby měl návštěvník možnost výzvu vyřešit znovu.
response-field data-response-field Logická hodnota, která určuje, zda se vytvoří vstupní prvek s tokenem odpovědi. Výchozí hodnota je true.
response-field-name data-response-field-name Název prvku input, výchozí hodnota je cf-turnstile-response.
size data-size Velikost widgetu. Může nabývat těchto hodnot: normal, flexible, compact.
retry data-retry Určuje, zda se widget má o získání tokenu automaticky pokusit znovu, pokud napoprvé neuspěl. Výchozí hodnota je auto, což znamená automatické zopakování pokusu. Lze to nastavit na never a opakování při chybě se vypne.
retry-interval data-retry-interval Když retry je nastaven na auto, retry-interval určuje dobu mezi opakovanými pokusy v milisekundách. Hodnota musí být kladné celé číslo menší než 900000, výchozí hodnota je 8000.
refresh-expired data-refresh-expired Po vypršení platnosti token automaticky obnoví. Může nabývat hodnot auto, manual, případně never, výchozí hodnota je auto.
refresh-timeout data-refresh-timeout Určuje, zda se widget má automaticky obnovit, když u interaktivní výzvy vyprší časový limit. Přijímá hodnoty auto (po vypršení interaktivního timeoutu se automaticky obnoví), manual (vyzve návštěvníka k ručnímu obnovení) nebo never (zobrazí se timeout), výchozí hodnota je auto. Platí pouze pro widgety v režimu Managed.
appearance data-appearance Parametr appearance určuje, kdy je widget viditelný. Může být always (výchozí), execute, případně interaction-only. Viz Režimy vzhledu s dalšími informacemi.
feedback-enabled data-feedback-enabled Umožňuje Cloudflare shromažďovat zpětnou vazbu od návštěvníků při selhání widgetu. Může být true (výchozí) nebo false.
offlabel-show-privacy data-offlabel-show-privacy Zobrazí odkaz na zásady ochrany soukromí u widgetů Turnstile bez brandingu. Může být true (výchozí) nebo false.
offlabel-show-help data-offlabel-show-help Zobrazí odkaz na nápovědu u widgetů Turnstile bez brandingu. Může být true (výchozí) nebo false.

Příklady

Widget s responzivním designem
<div style="max-width: 500px;">
  <div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-size="flexible" data-theme="auto"></div>
</div>
Kompaktní widget optimalizovaný pro mobilní zařízení
<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-size="compact" data-theme="light" data-language="en">
</div>