33 votes

Pourquoi les navigateurs modernes ne prennent-ils pas en charge les méthodes PUT et DELETE des formulaires ?

Je viens de finir de construire une API RESTful pour l'une de mes dernières applications. J'ai également construit une classe d'échafaudage d'interface administrateur simple qui va énumérer les ressources et construire des formulaires et des tableaux simples pour éditer, créer, supprimer, etc.

Pour mettre à jour et supprimer des ressources, la classe génère un formulaire avec les méthodes PUT et DELETE, assez simple:

et

Très simple. Si Javascript est détecté, alors il interceptera le formulaire et utilisera une requête XMLHTTPRequest pour soumettre en arrière. Le Javascript prend en charge les autres méthodes HTTP, mais pourquoi les navigateurs modernes ne prennent-ils pas en charge les méthodes PUT et DELETE? Cela finit par envoyer un GET.

Je préférerais que lorsque l'application tombe gracieusement en arrière sur HTML standard, les mêmes méthodes soient utilisées, plutôt que d'avoir à utiliser des champs cachés et la logique pour cela dans la classe, ou pire, mettre la méthode dans l'URI et permettre à GET de fonctionner.

Je ne vois aucune raison pour que les navigateurs ne prennent pas en charge les autres méthodes HTTP, puisque les développeurs contournent de toute façon cela en piratant GET ou en utilisant POST.

J'ai cherché une réponse, et j'ai pu le trouver spécifié comme faisant partie de la spécification XHTML 2.0. Il n'en est pas question dans la spécification HTML5.

Y a-t-il une raison pour laquelle cela n'est pas pris en charge dans les navigateurs 'conformes à HTML5'? Où puis-je poster une demande pour rouvrir ce sujet et le mettre en œuvre dans les navigateurs?

21voto

Jonathan Points 3145

Certains frameworks web (par exemple Ruby on Rails) contourne cela en incluant un paramètre caché _method dans le formulaire avec la valeur de la méthode "réelle", par exemple :

Le framework réécrit ensuite la requête côté serveur avant de la traiter pour utiliser la valeur du paramètre _method comme méthode HTTP.

Ne sais pas si cela vous aide.

8voto

Harri Points 1041

HTML 4.01 ne prend en charge que post et get, voir http://www.w3.org/TR/html4/interact/forms.html#h-17.3 Pas sûr des autres spécifications HTML.

7voto

iAmGroot Points 1586

En fait, j'ai fait une toute petite recherche et j'ai trouvé cette réponse sur un autre forum Stackexchange.

Je sais que ce n'est pas une bonne réponse de poster un lien mais je ne connais pas la réponse exacte. Donc, c'est le seul moyen de résoudre votre doute.

https://softwareengineering.stackexchange.com/questions/114156/why-there-are-no-put-and-delete-methods-in-html-forms

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X