# Rediriger vers une page de remerciement après l'envoi d'un formulaire

> Envoyez les visiteurs vers votre propre page de remerciement après l'envoi d'un formulaire : la redirection 303, le champ _redirect, les domaines autorisés et l'effet d'un rafraîchissement.

Publié le 2026-10-25 · https://ikiform.com/fr/guides/html-form-submission/redirect-after-submit

Un formulaire ne peut pas se rediriger lui-même ; le serveur qui reçoit l'envoi répond `303 See Other` avec un en-tête `Location`, et le navigateur charge cette page. Avec Ikiform, définissez **Redirect after submit** dans les paramètres du formulaire, ou ajoutez un input masqué `_redirect` avec une URL `https:` sur l'un des **Allowed domains** du formulaire. Sans l'un ni l'autre, les visiteurs arrivent sur la page de remerciement hébergée par Ikiform.

L'exemple est un formulaire de demande de démo dont la page de remerciement est en réalité une étape suivante : elle demande au visiteur de choisir un créneau. La cible de la redirection compte donc plus que d'habitude, et cela soulève la question dont traite surtout cette page : qui a le droit de décider où un formulaire envoie les gens.

## Ce qui change ici

Le HTML n'a pas d'attribut pour « aller ici après l'envoi ». L'`action` est l'endroit où vont les données, et la page suivante est ce que le serveur répond. La redirection est donc toujours la décision du serveur qui reçoit. Quand ce serveur est Ikiform, il y a exactement deux façons de l'influencer, et elles n'inspirent pas la même confiance.

|   | Paramètre Redirect after submit | Input masqué `_redirect` |
| --- | --- | --- |
| Qui le définit | Les membres de votre espace de travail, dans le tableau de bord | Toute personne qui peut modifier le HTML de la page, ou le navigateur du visiteur |
| Cibles autorisées | Toute URL `http:` ou `https:` | `https:` uniquement, sur un domaine autorisé ou l'un de ses sous-domaines |
| Portée | Une seule cible pour tout le formulaire | Une par page, donc par langue ou par campagne |
| Quand les deux sont définis | Prioritaire | Ignoré |

Les règles strictes sur `_redirect` existent parce que sa valeur arrive avec l'envoi. Sans elles, n'importe qui pourrait placer l'URL de votre formulaire dans un lien qui envoie puis renvoie les visiteurs vers une page de phishing : c'est ce qu'on appelle une redirection ouverte.

Schéma : Comment Ikiform choisit où envoyer le navigateur après un envoi réussi

1. Si le formulaire a une URL Redirect after submit dans ses paramètres, Ikiform répond par un 303 vers celle-ci sans chercher plus loin.
2. Sinon, si l'envoi a un champ _redirect, ou _next, qui est une URL https sur un domaine autorisé sans port ni identifiants, Ikiform y redirige.
3. Sinon, Ikiform redirige vers sa page de remerciement hébergée, qui renvoie un lien vers votre page quand l'envoi vient d'une page https sur un domaine autorisé.

La première correspondance l'emporte. Un _redirect qui ne respecte pas les règles est ignoré silencieusement ; ce n'est jamais une erreur.

## Le formulaire

`demo.html`:

```html
<form action="https://ikiform.com/f/frm_xxxxxxxxxxxxxxxx" method="post">
  <label for="email">Work email</label>
  <input id="email" name="email" type="email" autocomplete="email" required />

  <label for="company">Company</label>
  <input id="company" name="company" autocomplete="organization" required />

  <label for="team_size">Team size</label>
  <select id="team_size" name="team_size">
    <option value="1-10">1 to 10</option>
    <option value="11-50">11 to 50</option>
    <option value="51+">51 or more</option>
  </select>

  <input type="hidden" name="_redirect" value="https://example.com/demo/next-step" />
  <input name="_gotcha" type="text" tabindex="-1" autocomplete="off" hidden />
  <button>Request a demo</button>
</form>
```

Ajoutez `example.com` sous les **Allowed domains** du formulaire et ce formulaire s'envoie, reçoit un `303` et arrive sur `/demo/next-step`. La page de remerciement est du HTML ordinaire sur votre site :

`demo/next-step.html`:

```html
<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <meta name="robots" content="noindex" />
    <title>Thanks, pick a time</title>
  </head>
  <body>
    <h1>Thanks. One more step.</h1>
    <p>Pick a time for your demo. You'll get a calendar invite right away.</p>
    <p><a href="https://cal.example.com/acme/demo">Choose a time</a></p>
  </body>
</html>
```

- `noindex` la garde hors des résultats de recherche. Personne ne devrait y arriver depuis Google, et une page de remerciement qui apparaît comme page d'entrée dans vos statistiques signale qu'un lien y mène.
- Le rafraîchissement est sans risque. Comme Ikiform a répondu par `303`, le navigateur a chargé cette page en GET, et la recharger ne renvoie rien.
- Si vous comptez les conversions sur cette page, comptez une fois par session. Un rafraîchissement ou un favori la recharge, et le tableau de bord d'Ikiform fait foi pour le décompte.

## Rediriger vers un autre site

Supposons que vous vouliez sauter votre propre page et envoyer directement les gens vers un outil de réservation sur un autre domaine, comme `cal.example.com` ou le domaine d'un service de prise de rendez-vous. Avec `_redirect`, ce domaine devrait figurer dans **Allowed domains**, et cette liste a un second rôle : elle décide quels sites peuvent envoyer vers le formulaire. Ajouter le domaine d'un service de prise de rendez-vous signifie que des pages de ce domaine pourraient aussi envoyer vers votre formulaire.

Utilisez plutôt **Redirect after submit** dans les paramètres du formulaire. Il accepte n'importe quelle URL, car seul votre espace de travail peut le définir, et il laisse **Allowed domains** ne lister que vos propres sites.

> Ikiform redirige vers l'URL exactement telle qu'elle est donnée. Il n'ajoute ni l'identifiant de soumission ni aucune valeur de champ, donc une page de réservation ne peut pas être préremplie à partir de la redirection. Redemandez l'e-mail sur cette page, ou mettez un lien vers la page de réservation depuis votre propre page de remerciement.

## Des pages différentes pour des formulaires différents

Le paramètre du tableau de bord correspond à une URL par formulaire. Quand un même formulaire apparaît sur plusieurs pages qui ont besoin de pages de remerciement différentes, laissez le paramètre vide et donnez à chaque page son propre `_redirect`. Une page en allemand envoie les visiteurs vers la page de remerciement en allemand :

`de/demo.html`:

```html
<input type="hidden" name="_redirect" value="https://example.com/de/demo/danke" />
```

### Ajouter une valeur à la redirection

Les paramètres d'URL de `_redirect` sont conservés, donc vous pouvez transmettre à la page de remerciement ce que le visiteur a choisi. Définissez la valeur dans un écouteur submit, qui s'exécute après la validation du navigateur et avant l'encodage du formulaire :

`demo.js`:

```js
const form = document.querySelector("form");
const redirect = form.elements.namedItem("_redirect");

form.addEventListener("submit", () => {
  const size = form.elements.namedItem("team_size").value;
  const next = new URL("https://example.com/demo/next-step");
  next.searchParams.set("size", size);
  redirect.value = next.href;
});
```

Le visiteur arrive sur `/demo/next-step?size=11-50`, et la page peut afficher le bon lien de réservation pour cette taille d'équipe. Limitez-vous à des valeurs non personnelles : les paramètres d'URL finissent dans l'historique du navigateur, les journaux du serveur et les outils d'analyse.

## Rediriger après un envoi avec fetch

Un appel `fetch` reçoit du JSON, pas une redirection, donc les règles de redirection d'Ikiform ne s'appliquent pas. Naviguez vous-même quand la réponse est `ok` :

`Redirection depuis un script`:

```js
const response = await fetch(form.action, {
  method: "POST",
  headers: { Accept: "application/json" },
  body: new FormData(form),
});
const result = await response.json();
if (result.ok) location.assign("/demo/next-step");
```

Utilisez `location.assign` plutôt que `location.replace` si le bouton retour doit ramener au formulaire. Le [guide sans rechargement](https://ikiform.com/fr/guides/html-form-submission/without-page-reload.md) contient le gestionnaire complet avec erreurs et état de chargement.

## Vérifiez que tout fonctionne

1. Dans **Allowed domains** du formulaire, ajoutez le domaine de votre site, plus `localhost` pendant le développement. Laissez vide pour accepter les envois de partout.
2. Envoyez le formulaire depuis votre page en production. La barre d'adresse affiche votre page de remerciement, et le panneau Réseau montre que l'envoi a reçu `303`.
3. Rafraîchissez la page de remerciement. Le navigateur ne demande pas de renvoyer le formulaire, et le tableau de bord affiche toujours une seule soumission.
4. Remplacez `_redirect` par une adresse sur un domaine non autorisé et envoyez. Vous arrivez plutôt sur la page de remerciement hébergée par Ikiform, sans erreur.
5. Ouvrez **Submissions** dans le tableau de bord. La nouvelle soumission y est, avec tous les champs envoyés.

## Pièges

| Problème | Cause et solution |
| --- | --- |
| `_redirect` est ignoré alors que le domaine est autorisé | **Redirect after submit** est défini dans les paramètres du formulaire, et il l'emporte toujours. Videz-le pour utiliser des redirections par page |
| Fonctionne en production, pas sur `localhost` | `_redirect` doit être en `https:` sans port, donc `http://localhost:3000/thanks` ne passe jamais. Testez sur un déploiement de preview, ou acceptez la page hébergée en local |
| La page de remerciement hébergée n'a pas de lien vers votre site | Elle ne renvoie un lien que lorsque l'envoi vient d'une page `https:` sur l'un des domaines autorisés du formulaire. Ajoutez le domaine, ou redirigez vers votre propre page |
| Le navigateur arrive sur la page de remerciement d'Ikiform au lieu de la vôtre | `_redirect` est ignoré sauf si son domaine figure dans **Allowed domains** et qu'il s'agit d'une URL `https:`. Ajoutez le domaine, ou définissez plutôt **Redirect after submit** dans les réglages du formulaire. |
| La page de remerciement apparaît dans les résultats de recherche | Ajoutez-y `<meta name="robots" content="noindex">`, et ne la liez pas depuis votre navigation |

Les règles exactes, avec des exemples d'URL acceptées et refusées, se trouvent dans [Formulaires HTML](https://ikiform.com/fr/docs/html.md#redirect-rules). La [vue d'ensemble](https://ikiform.com/fr/guides/html-form-submission.md#response) explique pourquoi la réponse est un `303` et pas un `302` ou un `200`.

## Questions

### Comment rediriger vers une autre page après l'envoi d'un formulaire HTML ?

Le serveur qui reçoit le formulaire répond par une redirection 303 vers la page. Avec Ikiform, définissez Redirect after submit dans les paramètres du formulaire, ou ajoutez un input masqué _redirect avec une URL https sur l'un des domaines autorisés du formulaire.

### Pourquoi mon _redirect est-il ignoré ?

Soit le paramètre Redirect after submit du formulaire est défini, et il l'emporte toujours, soit l'URL ne respecte pas les règles : elle doit être en https, sur un domaine autorisé ou l'un de ses sous-domaines, sans port, nom d'utilisateur ni mot de passe. Les formulaires sans domaines autorisés ignorent _redirect.

### Puis-je rediriger vers un autre site après l'envoi du formulaire ?

Oui. Placez l'URL dans le paramètre Redirect after submit du formulaire, qui accepte toute URL http ou https. Utiliser _redirect à la place obligerait à ajouter ce site à vos domaines autorisés, ce qui lui permettrait aussi d'envoyer vers votre formulaire.

### La page de remerciement peut-elle afficher ce que le visiteur a envoyé ?

Pas via la redirection d'Ikiform, qui utilise l'URL exactement telle qu'elle est donnée. Vous pouvez ajouter des valeurs non personnelles à l'URL _redirect dans un écouteur submit, ou afficher un message depuis votre propre script après un envoi avec fetch.

## Autres guides

- [Envoi de formulaire HTML](https://ikiform.com/fr/guides/html-form-submission.md): Ce que fait un navigateur quand un formulaire est envoyé : quels champs il transmet, comment il les encode, ce que le serveur doit répondre, et comment Ikiform répond.
- [Sans rechargement de page](https://ikiform.com/fr/guides/html-form-submission/without-page-reload.md): Envoyez un formulaire avec fetch et FormData pour que le visiteur reste sur la page, avec erreurs de champ, état de chargement, nouvelles tentatives et solution de repli quand les scripts échouent.
- [L'attribut action](https://ikiform.com/fr/guides/html-form-submission/action-attribute.md): Ce que fait l'attribut action d'un formulaire, comment les valeurs relatives et vides sont résolues, comment formaction envoie un formulaire à deux endroits, et pourquoi les hébergeurs statiques répondent 405.
- [Validation de formulaire](https://ikiform.com/fr/guides/html-form-submission/validation.md): Validez un formulaire avec required, type, pattern et min, stylisez les erreurs avec :user-invalid, et imposez les mêmes règles sur le serveur avec des définitions de champs.
