我想知道是否有人可以使用空白HTML表单操作将其发布回当前页面,从而给出“最佳实践”响应。
这里有一篇帖子问空白的HTML表单动作是做什么的,并且像这样的一些页面表明它很好,但是我想知道人们的想法。
<form name="xyz" >
)。它将自行提交操作。
我想知道是否有人可以使用空白HTML表单操作将其发布回当前页面,从而给出“最佳实践”响应。
这里有一篇帖子问空白的HTML表单动作是做什么的,并且像这样的一些页面表明它很好,但是我想知道人们的想法。
<form name="xyz" >
)。它将自行提交操作。
Answers:
您可以做的最好的事情就是完全忽略action属性。如果不填写,表格将被提交到文档的地址,即同一页面。
也可以将其保留为空,并且任何实现HTML表单提交算法的浏览器都将其视为等同于文档的地址,这主要是因为浏览器当前的工作方式是:
8.
让action作为Submitter元素的action。
9.
如果action为空字符串,则让action为文档的地址。注意:此步骤是对RFC 3986 的故意违反,这将需要在此处处理基本URL。这种侵犯是由于希望与遗留内容兼容而引起的。[RFC3986]
这绝对适用于所有当前浏览器,但可能无法在某些较旧的浏览器中正常工作(“ 浏览器使用空的action =“” attribute “ 来做奇怪的事情,这就是该规范强烈劝阻作者不要将其留空的原因:
在
action
与formaction
内容属性,如果指定,必须有一个值是一个有效的非空URL用空格潜在的包围。
action=""
-请参阅我的回答...
实际上,当前HTML5草案的“ 表单提交”小节不允许action=""
。这违反规范。
在
action
与formaction
内容属性,如果指定,必须有一个值是一个有效的非空 URL用空格潜在的包围。(添加了重点)
墨卡托答案中引用的部分是对实现的要求,而不是作者的要求。作者必须遵守作者的要求。引用如何阅读本规范:
特别是,存在适用于生产者(例如作者及其创建的文档)的一致性要求,并且存在适用于消费者(例如Web浏览器)的一致性要求。它们可以通过其需求来区分:对生产者的要求说明了允许的内容,而对消费者的要求说明了软件的行为方式。
之所以对HTML4进行了更改(确实允许使用空的URL),是因为“ 浏览器使用空的action=""
属性来做奇怪的事情 ”。考虑到更改的原因,最好不要在HTML4中也这样做。
action
属性以指示该表单应提交到文档地址?因为它说的是“如果指定”。
如果不包含action属性,则会打开该页面以进行iframe clickjacking攻击,其中涉及一些简单的步骤:
参考资料
这将使用HTML5进行验证。
<form action="#">
action="."
吗?
action="."
对于一般情况来说是个坏主意。像这样的URL example.com/login
仅映射到example.com/
。
HTML 5中action=""
不支持,因此请勿这样做。坏习惯。
相反,如果您完全完全取消操作,则默认情况下它将提交到同一页面,所以我认为这是最佳做法:
<form>This will submit to the current page</form>
如果使用php汇总表格,则可能需要考虑以下内容。在这里阅读更多有关它的信息。
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
另外,您可以#
记住,尽管这会像锚一样,并滚动到页面顶部。
<form action="#">
htmlspecialchars()
功能可以阻止人们对您使用php脚本。
我通常使用action =“”,它是XHTML有效的,并将GET数据保留在URL中。