Maison > Questions et réponses > le corps du texte
Quelle est la différence entre l'utilisation de la méthode GET
或 POST
? Lequel est le plus sûr ? Quels sont leurs avantages et inconvénients respectifs ?
(Question similaire)
P粉8845486192023-10-15 14:16:09
Lorsqu'un utilisateur saisit des informations dans un formulaire et clique sur « Envoyer », les informations peuvent être envoyées du navigateur au serveur de deux manières : dans l'URL ou dans le corps de la requête HTTP.
La méthode GET utilisée dans l'exemple précédent ajoute une paire nom/valeur à l'URL. Malheureusement, la longueur des URL est limitée, cette méthode ne fonctionne donc qu'avec très peu de paramètres. Si un formulaire utilise un grand nombre de paramètres, ou si les paramètres contiennent une grande quantité de données, l'URL peut être tronquée. De plus, les paramètres transmis sur l'URL sont visibles dans le champ d'adresse du navigateur, qui n'est pas le meilleur endroit pour afficher le mot de passe.
Une alternative à la méthode GET est la méthode POST. Cette méthode encapsule les paires nom/valeur dans le corps de la requête HTTP, ce qui rend l'URL plus propre et n'impose aucune limite de taille à la sortie du formulaire. C'est aussi plus sûr.
P粉0020233262023-10-15 12:54:06
Ce n'est pas un problème de sécurité. Le protocole HTTP définit les requêtes de type GET comme idempotent, tandis que POST peut avoir des effets secondaires. En clair, cela signifie que GET est utilisé pour afficher quelque chose sans le modifier, et POST est utilisé pour modifier quelque chose. Par exemple, une page de recherche doit utiliser GET, tandis qu'un formulaire permettant de modifier votre mot de passe doit utiliser POST.
Veuillez également noter que PHP confond un peu ces concepts. Les requêtes POST prennent en compte les données de la chaîne de requête et du corps de la requête. Les requêtes GET obtiennent simplement les entrées de la chaîne de requête. Ainsi, une requête POST est un sur-ensemble d'une requête GET ; vous pouvez utiliser $_GET
,甚至可以在 $_POST
和 $_GET
dans une requête POST avec des paramètres du même nom qui signifient des choses différentes.
Par exemple, disons que vous disposez d’un formulaire pour modifier un article. L'ID de l'article peut être dans la chaîne de requête (et donc transmis $_GET['id']
获得),但假设您想要更改文章 ID。然后,新的 ID 可能会出现在请求正文中 ($_POST['id']
). D'accord, ce n'est peut-être pas le meilleur exemple, mais j'espère que cela illustre la différence.