我想知道是否有人可以给出一个“最佳实践”的回应,使用空白HTML表单动作发布回当前页面。

有一个帖子问一个空白的HTML表单动作在这里做什么,一些像这样的页面认为它是好的,但我想知道人们是怎么想的。


当前回答

实际上,当前HTML5草案的Form Submission分段不允许action=""。这是违反规格的。

action和formaction内容属性(如果指定)必须具有一个有效的非空URL值,该值可能被空格包围。(重点)

墨卡托的回答中引用的部分是对实现的要求,而不是对作者的要求。作者必须遵循作者要求。如何阅读本规范:

特别是,有一些一致性要求适用于生产者,例如作者和他们创建的文档,还有一些一致性要求适用于消费者,例如Web浏览器。它们可以通过它们的需求来区分:对生产者的需求说明了允许什么,而对消费者的需求说明了软件如何操作。

html4允许一个空的url,而html4的改变是因为“浏览器对一个空的action=”“属性”做了一些奇怪的事情。考虑到更改的原因,最好也不要在HTML4中这样做。

其他回答

只使用

?

<form action="?" method="post" enctype="multipart/form-data" name="myForm" id="myForm">

它并不违反HTML5标准。

实际上,当前HTML5草案的Form Submission分段不允许action=""。这是违反规格的。

action和formaction内容属性(如果指定)必须具有一个有效的非空URL值,该值可能被空格包围。(重点)

墨卡托的回答中引用的部分是对实现的要求,而不是对作者的要求。作者必须遵循作者要求。如何阅读本规范:

特别是,有一些一致性要求适用于生产者,例如作者和他们创建的文档,还有一些一致性要求适用于消费者,例如Web浏览器。它们可以通过它们的需求来区分:对生产者的需求说明了允许什么,而对消费者的需求说明了软件如何操作。

html4允许一个空的url,而html4的改变是因为“浏览器对一个空的action=”“属性”做了一些奇怪的事情。考虑到更改的原因,最好也不要在HTML4中这样做。

这将在HTML5中验证。

<form action="#">

我认为最好明确地说明表单的位置。如果你想要完全安全,如果你想要表单提交回自身,在action属性中输入相同的URL。尽管主流浏览器会将""赋值到同一页面,但不能保证非主流浏览器也会这样做。

当然,整个URL包括GET数据,就像Juddling指出的那样。

当你放空动作时,一些安全过滤认为它是恶意的或网络钓鱼。因此,他们可以阻止你的页面。所以建议不要让action=为空。