Использование метода POST с тегами привязки HTML - PullRequest
22 голосов
/ 06 декабря 2011

Я уверен, что ответом будет «НЕТ», но я все равно хотел спросить, только если я что-то пропустил.

Все знают, что передача данных на страницу в теге привязки с помощью GETМетод:

Меня интересует, есть ли способ сделать то же самое, но вместо этого использовать метод POST?

Моя цель состоит в том, чтобыСохраняйте чистоту URL-адресов, которые видит пользователь, не помещая в них ничего, что им не нужно видеть.

Это не имеет ничего общего с проблемами безопасности, поскольку я уже знаю, что будут способы получения передаваемых данных.

Если ответ действительно отрицательный, то какие методы люди используют для передачи данных, когда есть желание поддерживать чистоту URL-адресов?Печенье?Что-то еще?

и как бороться со сценариями, когда длина URL-адреса превышает допустимую длину запроса GET

Я сталкиваюсь с этой проблемой при реализации сортировки / разбиения на страницы с displaytag, все параметры запросадобавление в url-адресе sort / pagination, превышающем допустимую длину запроса GET.

Ответы [ 4 ]

35 голосов
/ 06 декабря 2011

Вы можете сделать что-то вроде этого:

<form id="myform" method="post" action="target.html">
  <input type="hidden" name="name" value="value" /> 
  <a onclick="document.getElementById('myform').submit();">click here</a>
</form>
5 голосов
/ 06 декабря 2011

Это поведение относится к библиотеке тегов отображения. Это позволяет легко добавлять в закладки результаты поиска. Если вы действительно намерены изменить это, чтобы использовать POST, то вам нужно переписать библиотеку отображаемых тегов или ввести немного jQuery для управления ссылками.

Остаток ваших вопросов нигде не кипит. Если вы хотите GET (идемпотентные запросы, закладки для закладок, поисковые роботы и т.д.), используйте GET. Если вы хотите POST (неидемпотентные запросы, не закладные URL, не сканируемые URL и т. Д.), Используйте POST.

Обычно POST является обязательным, когда запрос может изменить данные на сервере. Подумайте о SQL INSERT, UPDATE, DELETE и т. Д. Вы, конечно, не будете делать такие запросы GET. Представьте, что у вас есть таблица со всеми ссылками «удалить строку», которые выполняют GET, а затем появляется поисковый робот ...

3 голосов
/ 06 декабря 2011

Вы можете использовать JavaScript.При щелчке по ссылке выполните form.submit

Единственный известный мне способ работы с длинным URL-адресом - использовать вместо него POST.

0 голосов
/ 06 декабря 2011

Вы можете создать временную форму и отправить ее во время события onclick тега <a>.

...