Un widget tourne sur des sites qui ne sont pas les vôtres : vos clients intègrent votre formulaire de réservation, votre boutique ou votre billetterie dans leurs pages. Bot Protection y fonctionne aussi, avec trois points à régler : où tourne le tag, comment le token arrive à votre serveur et quels domaines votre plan compte.
Dans un frame sur votre propre domaine (recommandé)
Servez le widget depuis votre domaine et laissez vos clients l'intégrer dans un <iframe>. Placez le tag dans la page à l'intérieur du frame, comme sur n'importe quelle page à vous. Bot Protection voit alors votre domaine, quel que soit le site qui l'intègre : un domaine pour votre plan, prouvé comme les autres (votre page d'accueil porte le tag, ou vous l'ajoutez sur la page Set-up).
Dans un frame, les cookies de votre page sont tiers. Chrome, Edge et Firefox les gardent à part pour chaque site qui vous intègre, et Safari n'en garde aucun. Ne comptez donc pas sur le cookie _kz là : avant l'action protégée, prenez le token du tag et envoyez-le vous-même.
const token = await window.korzen?.ready(); await fetch("/api/book", { method: "POST", headers: { "content-type": "application/json", "x-korzen-token": token || "" }, body: JSON.stringify(order), });
Sur votre serveur, donnez cet en-tête à l'appel comme son token, avant le cookie :
const input = fromNodeRequest(req, { ip: (_get, r) => r.ip, path: "/api/book" }); input.token = req.get("x-korzen-token") || input.token; const decision = await korzen.decide(input);
Chaque SDK et l'appel depuis votre serveur acceptent un champ token de la même façon. Le stockage d'un frame est lui aussi séparé par site : le même visiteur sur deux sites de vos clients est deux appareils pour Bot Protection. C'est un signal absent, jamais une preuve de bot.
La page de challenge et les frames
La page de challenge renvoie le visiteur avec un cookie qu'un frame ne garde pas. Dans un frame, répondez à challenge par une étape à vous (votre CAPTCHA, une vérification par e-mail ou téléphone), et laissez require_token hors des actions du frame. Voir mode monitor et mode block pour ce que signifie chaque action.
Un script sur la page de votre client
Un widget qui est un script que vos clients collent, sans frame, tourne sur leur page. Le tag tourne alors sur leur domaine, chaque domaine de vos clients compte dans votre plan, et leurs pages doivent porter le tag avec votre site key. Votre script appelle votre serveur depuis une autre origine, où les cookies ne sont pas envoyés : envoyez le token dans l'en-tête comme ci-dessus, et autorisez x-korzen-token dans votre réponse CORS.
Les noms d'hôte de vos clients
Un nom d'hôte que votre client fait pointer vers vous (tickets.saboutique.fr, un CNAME) est son domaine : il compte comme l'un des domaines de votre plan, comme le script ci-dessus. Les plans protègent jusqu'à cinq domaines ; avec plus de noms d'hôte de vos clients, servez le widget dans un frame sur votre domaine, ou écrivez-nous.