Атрибут action
является обязательным , но вы можете указать пустую ссылку на URI, которая ссылается на текущий URI:
<form method="POST" action="">
Редактировать Хорошо, это фактически полевая ошибка WebKit 528+ (см. Ошибка 19884 ), когда пустой URI используется с указанным базовым URI с использованием элемента BASE
, В этом случае WebKit использует базовый URI вместо разрешения пустого URI из базового URI.
Но это правильное поведение в соответствии с RFC 3986 :
5,1. Создание базового URI
Термин «относительный» подразумевает, что существует «базовый URI», против которого
относительная ссылка применяется. [...]
Базовый URI ссылки может быть установлен одним из четырех способов,
обсуждается ниже в порядке приоритета. Порядок старшинства может
следует рассматривать с точки зрения слоев, где самая внутренняя определенная основа
URI имеет самый высокий приоритет. Это можно визуализировать графически
следующим образом:
.----------------------------------------------------------.
| .----------------------------------------------------. |
| | .----------------------------------------------. | |
| | | .----------------------------------------. | | |
| | | | .----------------------------------. | | | |
| | | | | <relative-reference> | | | | |
| | | | `----------------------------------' | | | |
| | | | (5.1.1) Base URI embedded in content | | | |
| | | `----------------------------------------' | | |
| | | (5.1.2) Base URI of the encapsulating entity | | |
| | | (message, representation, or none) | | |
| | `----------------------------------------------' | |
| | (5.1.3) URI used to retrieve the entity | |
| `----------------------------------------------------' |
| (5.1.4) Default Base URI (application-dependent) |
`----------------------------------------------------------'
В этом случае элемент BASE
с атрибутом href
является базовым URI , встроенным в содержимое . И базовый URI, встроенный в содержимое , имеет более высокий приоритет, чем URI, используемый для извлечения сущности . Таким образом, поведение WebKit на самом деле является ожидаемым поведением согласно RFC 3986.
Но в HTML 5 это поведение пустого URI в form
's action
(все еще черновик) отличается от RFC 3986:
Если action - пустая строка, пусть action будет адресом документа .
Примечание. Этот шаг является преднамеренным нарушением документа RFC 3986, что потребовало бы обработки базового URL здесь. Это нарушение мотивировано желанием совместимости с устаревшим контентом. [RFC3986]
Честно говоря, комментарий HTML после этой заметки в исходном коде гласит:
<!-- Don't ask me why. But that's what IE does. It even treats
action="" differently from action=" " or action="#" (the latter
two resolve to the base URL, the first one resolves to the doc
URL). And other browsers concur. It is even required, see e.g.
http://bugs.webkit.org/show_bug.cgi?id=7763
https://bugzilla.mozilla.org/show_bug.cgi?id=297761
-->
Так что это скорее ошибка, возникшая из Internet Explorer, которая стала стандартом де-факто.