Мне интересно, может ли кто-нибудь дать ответ «передовой опыт» на использование пустых действий в форме HTML для публикации на текущей странице.
Есть пост, спрашивающий, что здесь делает пустое действие HTML-формы, и некоторые страницы, подобные этой, предполагают, что это хорошо, но я хотел бы знать, что думают люди.
forms
web-standards
string
html
Мэтт Митчелл
источник
источник
<form name="xyz" >
). Он подаст действие самостоятельно.Ответы:
Лучшее, что вы можете сделать, это вообще не использовать атрибут action. Если вы пропустите это, форма будет отправлена на адрес документа, то есть на ту же страницу.
Также возможно оставить его пустым, и любой браузер, реализующий алгоритм отправки формы HTML, будет рассматривать его как эквивалент адреса документа, что он делает главным образом потому, что в настоящее время работают браузеры:
Это определенно работает во всех текущих браузерах, но может не работать должным образом в некоторых старых браузерах ( " браузеры делают странные вещи с пустым атрибутом action =" " " ), поэтому спецификация настоятельно не рекомендует авторам оставлять его пустым :
источник
action=""
см. Мой ответ ...На самом деле, подраздел «Отправка формы» текущего проекта HTML5 не позволяет
action=""
. Это против спец.Цитируемый раздел в ответе Меркатора является требованием к реализациям , а не авторам . Авторы должны следовать требованиям автора. Цитировать Как читать эту спецификацию :
Изменение в HTML4, которое разрешало пустой URL, было сделано потому, что « браузеры делают странные вещи с пустым
action=""
атрибутом ». Учитывая причину изменения, вероятно, лучше не делать этого в HTML4.источник
action
вообще полное отсутствие атрибута указывать, что форму следует отправлять на адрес документа? Кажется, так как он говорит, «если указано».Не включая атрибут действия, вы открываете страницу для атак iframe clickjacking , которые включают в себя несколько простых шагов:
Ссылки
источник
$_POST
вместо того,$_REQUEST
чтобы избежать этого. Если код фреймворка использует$_REQUEST
, используйте iframe buster .Это будет подтверждено HTML5.
источник
action="."
?action="."
это плохая идея для общего случая. URL-адрес, какexample.com/login
отображается простоexample.com/
.В HTML 5
action=""
не поддерживается, так что не делайте этого. ПЛОХАЯ ПРАКТИКА.Если вместо этого вы полностью отрицаете действие, оно по умолчанию будет отправляться на ту же страницу, я считаю, что это лучшая практика:
Если вы используете форму php, вы можете рассмотреть следующие вопросы. Об этом подробнее здесь.
В качестве альтернативы вы можете использовать
#
помнить, что это будет действовать как якорь и прокручивать страницу вверх.источник
htmlspecialchars()
функции не позволяет людям использовать ваш php-скрипт против вас.Я обычно использую action = "", который является допустимым XHTML и сохраняет данные GET в URL.
источник
Я думаю, что лучше четко указать, где форма сообщений. Если вы хотите быть в полной безопасности, введите тот же URL-адрес, на котором находится форма, в атрибуте действия, если вы хотите, чтобы он отправлялся обратно самому себе. Хотя обычные браузеры оценивают
""
одну и ту же страницу, вы не можете гарантировать, что неосновные браузеры будут.И, конечно же, весь URL, включая GET-данные, на которые указывает Juddling.
источник
Просто используйте
Это не нарушает стандарты HTML5.
источник
get
параметры. Форма на следующий URL будетexample.com/update_user?user_id=1
example.com/update_user?
Я часто делал это, когда работал с Classic ASP. Обычно я использовал его, когда для входа требовалась валидация на стороне сервера (до дней AJAX). Основной недостаток, который я вижу, заключается в том, что он не отделяет логику программирования от представления на уровне файлов.
источник
Я использую, чтобы не указывать атрибут действия вообще. На самом деле, так устроен мой фреймворк, все страницы возвращаются точно по одному и тому же адресу. Но сегодня я обнаружил проблему. Иногда я заимствую значение атрибута действия, чтобы сделать некоторый фоновый вызов (я думаю, некоторые люди называют их AJAX). Итак, я обнаружил, что IE сохраняет значение атрибута действия как пустое, если атрибут действия не был указан. Это немного странно в моем понимании, так как если атрибут действия не указан, аналог JavaScript должен быть как минимум неопределенным. В любом случае, моя точка зрения заключается в том, что перед тем, как вы выберете лучшую практику, вам нужно понять больше контекста, например, использовать атрибут в JavaScript или нет.
источник