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

StackOverflow https://stackoverflow.com/questions/325929

  •  11-07-2019
  •  | 
  •  

Вопрос

В 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, есть ли более простой способ, чем обернуть его в форму?

Это было полезно?

Решение

Существует только два способа ОПУБЛИКОВАТЬ из браузера - с помощью формы или Аякс просьба.

Другие советы

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

Как вы уже выяснили, существует ровно два способа передачи данных по протоколу 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 могут быть ужасно запутанными для чтения нами, простыми смертными.

Только в HTML это с формой.

Но вы можете сделать это, если будете играть на своей серверной стороне.Вот хорошая статья, которая покажет вам, как манипулировать Доберитесь, чтобы изменить его на Post через PHP.Для этого вам потребуется поиграть с fsockopen...Этот способ сделать это будет использовать ваш параметр ?id=1¶m= 2 ...и создаст POST-запрос на стороне сервера.Вы можете сделать его универсальным, как только он настроится, он заработает, но сначала нужно немного поработать, чтобы все настроить.

Конечно, вы всегда можете выполнить переход на страницу, содержащую серверную (или AJAX) логику, которая создаст POST-запрос (напримерПОЛУЧИТЬ /pageWhichCreatesAPost.py ).Конечно, очень грязно, но могут быть случаи, когда такой обходной путь мог бы оказаться полезным.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top