314 votes

Est-ce une bonne pratique d'utiliser un vide d'URL pour un formulaire HTML, l'attribut action? (action="")

Je me demande si quelqu'un peut donner un "meilleures pratiques" de la réponse à l'aide de HTML vide formulaire des actions de publier sur la page en cours.

Il y a un post en demandant à ce qu'un vide formulaire HTML d'action ici et certaines pages comme cela on suggère qu'elle est bien, mais j'aimerais savoir ce que les gens pensent.

305voto

mercator Points 16196

La meilleure chose que vous pouvez faire est de sortir de l'attribut action tout à fait. Si vous le laissez, le formulaire sera soumis à l'adresse du document, c'est à dire la même page.

Il est également possible de le laisser vide, et tout navigateur mise en œuvre de HTML du formulaire de soumission de l'algorithme va la considérer comme l'équivalent de l'adresse du document, c'est principalement parce que c'est la manière dont les navigateurs actuellement des travaux de:

8. Laisser l'action de l'auteur de l'élément d'action.

9. Si l'action est la chaîne vide, laisser l'action de l'adresse du document.

Remarque: Cette étape est une violation volontaire de la RFC 3986, qui aurait besoin de l'URL de base de traitement ici. Cette infraction est motivée par un désir pour la compatibilité avec le contenu existant. [RFC3986]

Absolument, cela fonctionne dans tous les navigateurs actuels, mais peuvent ne pas fonctionner comme prévu dans certains navigateurs plus anciens ("les navigateurs de faire des choses bizarres avec un vide d'action="" attribut"), qui est pourquoi les spec déconseille vivement les auteurs à partir de la laisser vide:

L' action et formaction attributs de contenu, s'il est spécifié, il doit avoir une valeur qui est un effet non-vide URL potentiellement entouré par des espaces.

85voto

derobert Points 26258

En fait, le Formulaire de Soumission paragraphe de l'actuel HTML5 projet ne permet pas l' action="". Il est contre la spec.

L' action et formaction attributs de contenu, si spécifié, doit avoir une valeur qui est valable non vide URL potentiellement entouré par des espaces. (emphase ajoutée)

La cité la section de mercator, la réponse est une exigence sur les implémentations, pas les auteurs. Les auteurs doivent suivre l'auteur exigences. Pour citer Comment lire cette spécification:

En particulier, il y a des exigences de conformité qui s'appliquent aux producteurs, par exemple, les auteurs et les documents qu'ils créent, et il y a des exigences de conformité qui s'appliquent aux consommateurs, par exemple, les navigateurs Web. Ils peuvent être distingués par ce qu'ils sont: une exigence des états producteurs de ce qui est autorisé, pendant une exigence relative à la consommation prévoit la manière dont le logiciel est d'agir.

Le changement de HTML4-qui n'permettre à un vide de l'URL a été prise parce que "les navigateurs de faire des choses bizarres avec un vide action="" attribut". Compte tenu de la raison pour le changement, le mieux est de ne pas le faire dans le HTML4.

21voto

Paul Sweatte Points 8668

Ne comprenant pas l'attribut action ouvre la page jusqu'à iframe clickjacking attaques, qui implique quelques étapes simples:

  • Un attaquant enroule votre page dans un iframe
  • L'iframe URL inclut une requête param avec le même nom qu'un champ de formulaire
  • Lorsque le formulaire est soumis, à la requête de la valeur est insérée dans la base de données
  • L'utilisateur les données personnelles (email, adresse, etc) a été compromise

18voto

Inge Henriksen Points 3068

Cela permettra de valider avec le HTML5.

<form action="#">

4voto

Will Morgan Points 1856

Je pense qu'il vaut mieux explicitement état où la forme des messages. Si vous voulez être totalement sûr, entrez l'URL de la forme est dans l'attribut action si vous souhaitez la présenter à lui-même. Bien que les navigateurs grand public d'évaluer "" à la même page, vous ne pouvez pas garantir que les non-traditionnels des navigateurs.

Et bien sûr, l'URL en entier, y compris OBTENIR des données comme Juddling points.

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