web-dev-qa-db-fra.com

En utilisant le POST Méthode avec balises d'ancrage HTML

Je suis certain que la réponse sera "NON", mais je voulais quand même poser la question juste Au cas où j'aurais manqué quelque chose.

Tout le monde sait qu’une personne transmet des données à une page d’une balise d’ancre en utilisant La méthode GET:

Ce que je me demande, c'est s'il y avait un moyen de faire la même chose, mais utilisez plutôt la méthode POST?

Mon objectif est de conserver les adresses URL que l’utilisateur voit propres en ne leur mettant rien d’utile qu’elles n’ont pas besoin de voir.

Cela n’a rien à voir avec des problèmes de sécurité car je le sais déjà. Il y aurait plusieurs façons d’obtenir les données transmises.

Si la réponse est effectivement non, alors quelles méthodes les gens utilisent-ils pour transmettre des données Quand on souhaite garder les URL propres? Biscuits? Autre chose?

et comment traiter les scénarios lorsque la longueur de l'URL dépasse la longueur autorisée de la requête GET

Je suis confronté à ce problème lors de la mise en œuvre du tri/pagination avec displaytag. Tous les paramètres de la requête sont ajoutés dans l'URL de tri/pagination, qui est supérieure à la longueur autorisée de la requête GET.

21
dpsdce

Vous pouvez faire quelque chose comme ça:

<form id="myform" method="post" action="target.html">
  <input type="hidden" name="name" value="value" /> 
  <a onclick="document.getElementById('myform').submit();">click here</a>
</form>
35
loscuropresagio

Ce comportement est spécifique à l'affichage de la bibliothèque de balises. Il permet des résultats de recherche faciles à marquer. Si vous avez vraiment l'intention de changer cela pour utiliser POST, vous devrez alors réécrire la bibliothèque de balises display ou importer un fichier jQuery pour manipuler les liens.

Le reste de vos questions ne va nulle part. Si vous souhaitez obtenir GET (requêtes idempotentes, URL de signet, URL crawable par searchbot, etc.), utilisez GET. Si vous voulez POST (requêtes non idempotentes, URL sans signet, URL non crawlables, etc.), utilisez ensuite POST. 

En général, POST est obligatoire lorsque la demande peut modifier les données du serveur. Pensez à un SQL INSERT, UPDATE, DELETE, etc. Vous ne ferez certainement pas ce genre de demandes GET. Imaginez que vous ayez une table avec tous les liens "delete row" qui font GET puis un robot de recherche arrive ...

5
BalusC

Vous pouvez utiliser javascript. Sur onclick de link do form.submit

La seule façon dont je connaisse la longueur de l'URL est d'utiliser plutôt POST.

3
PrasadB

Vous pouvez créer un formulaire temporaire et l'envoyer en même temps que l'événement onclick de la balise <a>.

0