Aller au contenu principal

Node.js

Vérifiez les jetons hCaptcha sur votre serveur à l'aide de Node.js avec le jeton intégré fetch. Cela fonctionne également avec JavaScript widget, React et Vue.

Configurer les touches

Configurez les jetons HCAPTCHA_SECRET et HCAPTCHA_SITEKEY dans votre environnement serveur à l'aide de vos identifiants de tableau de bord. Ne divulguez jamais ce secret dans le code client.

Vérifier un jeton

Lisez h-captcha-response depuis le formulaire soumis. Appelez cette fonction depuis votre gestionnaire de requêtes avant d'effectuer l'action protégée. Ne transmettez l'adresse IP du client que si elle provient d'une source fiable ; ne faites pas confiance aux en-têtes transférés arbitraires.

export async function verifyHCaptcha(token: string, remoteip?: string): Promise<boolean> {
const secret = process.env.HCAPTCHA_SECRET;
const sitekey = process.env.HCAPTCHA_SITEKEY;
if (!token || !secret || !sitekey) return false;

try {
const body = new URLSearchParams({ secret, sitekey, response: token });
if (remoteip) body.set('remoteip', remoteip);

const response = await fetch('https://api.hcaptcha.com/siteverify', {
method: 'POST',
body,
signal: AbortSignal.timeout(10000),
});
if (!response.ok) return false;

const result = await response.json();
return result?.success === true;
} catch {
return false;
}
}

URLSearchParams définit l'encodage du formulaire et le type de contenu. Rejetez l'action protégée lorsque cette fonction renvoie false, notamment en cas d'expiration du délai de vérification. Affichez un message invitant l'utilisateur à réessayer et obtenez un nouveau jeton avant de retenter l'opération.

Tester le gestionnaire

Utilisez le jeton correspondant test sitekey and secret. Vérifiez que les jetons de test valides sont acceptés, que les jetons manquants ou invalides échouent et que les pannes réseau empêchent l'action protégée.

Consultez le fichier verification reference pour connaître les champs de réponse et les codes d'erreur. La réussite d'un contrôle hCaptcha ne remplace pas les identifiants de connexion ni les autres contrôles d'autorisation.