Подтвердить что ты не робот

Является единственным способом передавать параметры POST в HTML через форму?

В HTML вы можете отправлять данные с одной страницы на другую с помощью запроса GET несколькими способами:

http://www.example.com/somepage.php?data=1

... или...

<form action="somepage.php" method="get">
  <input type="hidden" name="data" value="1" />
  <input type="submit" value="Submit">
</form>

Однако с запросом POST я видел только данные, отправляемые через такие элементы формы:

<form action="somepage.php" method="post">
  <input type="hidden" name="data" value="1" />
  <input type="submit" value="Submit">
</form>

Если у меня есть только один параметр, который я хочу отправить на другую страницу с помощью POST, есть ли более простой способ, чем обернуть его в форме?

4b9b3361

Ответ 1

Существует только два способа отправки POST из браузера: форма или запрос Ajax.

Ответ 2

Используя только HTML, форма является единственным способом генерации запроса POST. Вы можете использовать скрипты на стороне сервера /Javascript для генерации POST-запросов другими способами, но никаких других способов сделать с простым HTML не существует.

Ответ 3

Как вы уже обнаружили, существует ровно два способа передачи данных по протоколу http: GET или POST. Существует также HTTP-сообщение третьего типа, называемое HEAD, но оно действительно используется только для получения метаданных вокруг ресурса без его загрузки и широко не реализовано.

Очевидно, что оба GET и POST легко доступны с помощью тега <form>. GET также легко доступен, вручную добавляя параметры запроса к URL-адресу в виде пар имя-значение (foo.html?a=1&b=2).

Однако красота и сложность POST заключается в том, что пары имя-значение передаются из браузера на веб-сервер, заключенный в заголовок HTTP-запроса, который не так легко доступен. Единственный способ выполнить POST без использования тега <form> - это вручную изменить заголовок HTTP-запроса и добавить пары имени-значения в себя.

Также имейте в виду, что HTTP-сервер не знает, действительно ли запрос (GET или POST) пришел из главного окна браузера или вызова AJAX. Независимо от того, что веб-сервер прочитает запрос, расшифрует, если это запрос GET или POST, ищите пары имени и значения, если это необходимо, и создайте ответ.

Если вы хотите получить дополнительную информацию о том, как правильно форматировать запрос POST, вы можете перейти на jmarshall.com/easy/http/ или, возможно, tcpipguide.com/free/t_HTTPRequestMessageFormat.htm. Конечным ресурсом всегда является W3C, но иногда RFC могут быть ужасно запутанными для нас, простых смертных, чтобы читать.

Ответ 4

В HTML только он с формой.

Но вы можете это сделать, если играете со своей серверной стороной. Вот хорошая статья, которая показывает вам, как манипулировать Получить, чтобы изменить его на пост через PHP. Это потребует, чтобы вы играли с fsockopen... Этот способ для этого будет использовать ваш параметр? Id = 1 & param = 2... и создаст запрос POST на стороне сервера. Вы можете сделать его общим, как только он его установит, он будет работать, но он немного работает, чтобы сначала настроить все.

Ответ 5

Конечно, вы всегда можете сделать GET на странице, которая содержит логику на стороне сервера (или AJAX), которая создаст запрос POST (например, GET/pageWhichCreatesAPost.py). Конечно, очень беспорядочно, но могут быть случаи, когда такая работа может быть полезной.