Attribut method de <form> HTML
Définition et utilisation
method
Les attributs définissent la manière d'envoyer les données du formulaire (les données du formulaire sont envoyées à la page spécifiée par l'attribut action).
Les données du formulaire peuvent être envoyées en tant que variables de l'URL (en utilisant method="get") ou en tant que transaction HTTP POST (en utilisant method="post")
Description de GET :
- Ajoutez les données du formulaire sous forme de paires de nom/valeur à l'URL
- L'URL a une limitation de longueur (environ 3000 caractères)
- Ne jamais utiliser GET pour envoyer des données sensibles ! (Elles seront visibles dans l'URL)
- Très utile pour les utilisateurs qui souhaitent ajouter le résultat comme favori dans le formulaire de soumission
- GET est plus approprié pour les données non sécurisées, par exemple les chaînes de recherche dans Google.
Instructions sur POST :
- Ajouter les données du formulaire au corps de la requête HTTP (les données ne s'affichent pas dans l'URL).
- Pas de limite de taille.
- Les formulaires soumis avec POST ne peuvent pas être ajoutés aux favoris.
Exemple
Exemple 1
Soumettre le formulaire en utilisant la méthode "get":
<form action="/action_page.php" method="get"> <label for="fname">Prénom :</label> <input type="text" id="fname" name="fname"><br><br> <label for="lname">Nom de famille :</label> <input type="text" id="lname" name="lname"><br><br> <input type="submit" value="Soumettre"> </form>
Exemple 2
Soumettre le formulaire en utilisant la méthode "post":
<form action="/action_page.php" method="post"> <label for="fname">Prénom :</label> <input type="text" id="fname" name="fname"><br><br> <label for="lname">Nom de famille :</label> <input type="text" id="lname" name="lname"><br><br> <input type="submit" value="Soumettre"> </form>
Syntaxe
<form method="get|post">
Valeur de l'attribut
Valeur | Description |
---|---|
get | Par défaut. Ajouter les données du formulaire sous forme de paires nom/valeur à l'URL : URL?name=value&name=value. |
post | Envoyer les données du formulaire sous forme de transaction HTTP POST. |
Explication de l'attribut method
Le navigateur envoie les données du formulaire au serveur pour traitement en utilisant la méthode définie par l'attribut method. Il y a deux méthodes : la méthode POST et la méthode GET.
Si l'on utilise la méthode POST, le navigateur enverra les données selon deux étapes. Premièrement, le navigateur établit une connexion avec le serveur de traitement du formulaire spécifié dans l'attribut action, une fois la connexion établie, le navigateur enverra les données au serveur par des méthodes de transmission segmentées.
Du côté du serveur, une fois que l'application de type POST commence à s'exécuter, les paramètres doivent être lus à partir d'une position marquante, et avant que l'application puisse utiliser ces valeurs de formulaire, ces paramètres doivent être décodés. Le serveur spécifique de l'utilisateur indique explicitement comment l'application doit accepter ces paramètres.
Dans une autre situation, on utilise la méthode GET, où le navigateur établit une connexion avec le serveur de traitement du formulaire, puis envoie tous les données du formulaire en une seule étape de transmission : le navigateur adjoint les données directement après l'URL d'action du formulaire. Ces deux éléments sont séparés par un point d'interrogation.
Les navigateurs génèrent généralement des informations de formulaire via l'une de ces méthodes, mais certains serveurs n'acceptent que les données fournies par l'une de ces méthodes. Vous pouvez spécifier dans l'attribut method (méthode) du tag <form> la méthode que le serveur de traitement de formulaires doit utiliser pour traiter les données, soit POST soit GET.
POST ou GET ?
Si le serveur de traitement de formulaires prend en charge à la fois la méthode POST et la méthode GET, alors quelle méthode devriez-vous choisir ? Voici quelques règles à ce sujet :
- Si vous souhaitez obtenir les meilleures performances de transmission de formulaire, vous pouvez utiliser la méthode GET pour envoyer des petits formulaires avec un nombre limité de champs courts.
- Certains systèmes d'exploitation serveurs limitent le nombre et la longueur des paramètres en ligne de commande qui peuvent être transmis directement à l'application, dans ce cas, pour les formulaires qui ont de nombreux champs ou des zones de texte longues, il faut utiliser la méthode POST pour les envoyer.
- Si vous n'avez pas beaucoup d'expérience dans l'écriture d'applications de traitement de formulaires côté serveur, vous devriez choisir la méthode GET. Si vous utilisez la méthode POST, vous devrez faire un peu plus de travail pour lire et décoder les méthodes, ce qui n'est peut-être pas très difficile, mais peut-être que vous n'êtes pas prêt à gérer ces problèmes.
- Si la sécurité est un problème, nous recommandons d'utiliser la méthode POST. La méthode GET place directement les paramètres du formulaire dans l'URL de l'application, ce qui permet aux espions réseau de les capturer facilement et de les extraire des fichiers journaux du serveur. Si les paramètres contiennent des informations sensibles telles que le numéro de compte de carte de crédit, cela peut mettre en danger la sécurité de l'utilisateur sans qu'il s'en rende compte. En revanche, les applications POST n'ont pas de faille de sécurité et, au moins, peuvent utiliser des méthodes de chiffrement pour transmettre les paramètres en tant que transactions distinctes au serveur pour traitement.
- Si vous souhaitez appeler une application côté serveur en dehors du formulaire et inclure le processus de transmission de paramètres, vous devez utiliser la méthode GET, car cette méthode permet d'inclure des paramètres tels que le formulaire en tant que partie de l'URL. D'autre part, les applications de style POST souhaitent qu'il y ait un processus de transmission supplémentaire provenant du navigateur à la suite de l'URL, où le contenu de transmission ne peut pas être le contenu du tag <a> traditionnel.
Transmettre explicitement les paramètres
Certaines des suggestions précédentes peuvent également être considérées comme une certaine explication pour choisir ce mode. Supposons que vous ayez un formulaire très simple qui ne contient que les deux paramètres x et y. Lors de l'encodage des valeurs de ces éléments, elles sont sous la forme suivante :
x=28&y=66
Si le formulaire utilise method=GET, alors l'URL utilisée pour appeler l'application côté serveur sera comme suit :
http://www.example.com/example/program?x=28&y=66
À tout moment, nous pouvons créer un ancien <a> tag, l'utiliser pour appeler un formulaire avec des valeurs de paramètres nécessaires, sous la forme suivante :
<a href="http://www.example.com/example/program?x=28&y=66">
Le seul problème est que le symbole & utilisé pour séparer les paramètres est également un symbole d'insertion dans les entités de caractères. Si un symbole & est placé dans l'attribut href de l'étiquette <a>, le navigateur remplacera les caractères suivant par les entités de caractères correspondantes.
Pour éviter cela, nous devons remplacer le symbole & par son équivalent en entité, à savoir "&" ou "&". Après le remplacement, l'exemple de l'appel à l'application serveur non formulaire ci-dessus sera comme suit :
<a href="http://www.example.com/example/program?x=28&y=66">
Bien que le symbole & ne puisse toujours pas être utilisé dans l'URL et pourrait causer de la confusion à l'avenir, nous encourageons les serveurs à accepter également le point-virgule comme séparateur de paramètres. Vous pouvez également consulter la documentation de votre serveur pour savoir si cette fonction est prise en charge.
Compatibilité des navigateurs
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome | Edge | Firefox | Safari | Opera |
Support | Support | Support | Support | Support |