- Да, но не штатными средствами браузера. Только если с помощью инструментов разработчика или другим HTTP-клиентом, коих великое множество во главе с curl . И уж точно не стоит ожидать, что ответ будет таким же, т. к. разные "методы" предполагают совершение с запрашиваемым ресурсом разных действий (обычно GET это чтение, а POST это добавление нового).
- Не совсем. Формально да, но поля, передаваемые в строке запроса, не могут в такой ситуации быть привязаны к полям формы, т. е. не могут быть изменены при пользовательском взаимодействии с веб-страницей (инструменты разработчика, конечно, могут всё). Что в action -атрибуте формы указано, то в строке запроса и уйдёт.
- Из п. 3 следует, что это должна быть форма без полей. Даже у кнопки отправки формы должен отсутствовать атрибут name , иначе она тоже будет считаться полем формы и её значение будет отправлено в теле запроса.
- Но зачем? Нет. Разметка страницы — результат не более чем одного запроса. Нет, фреймы открывают отдельные страницы, которые частью исходной не являются. Нет, загрузка с помощью JavaScript куска страницы не сделает этот кусок частью исходной; к тому же, JavaScript может быть выключен или не поддерживаться.
Существуют, но не в типичных браузерах, разумеется. telnet , к примеру. Установите telnet -клиент и выполните в командной строке: telnet mail.ru 80 (да, важно явно указать порт). Он подключится к серверу. Наберите приведённое вами тело как есть (у меня в PowerShell ввод почему-то не уходил эхом в стандартный вывод, но он воспринимался) и дважды переведите строку для завершения запроса. В стандартный вывод будет выведен ответ.
Для HTTPS
же потребуется что-нибудь посерьёзнее.
Спускаться на настолько низкий уровень (telnet ничего не знает об HTTP) нужно только для очень узкого круга задач. Чтобы отправить сколько-нибудь нетривиальный запрос, надо погрузиться в дебри HTTP и преобразовать ваши данные в правильный для него формат. Поэтому для совершения произвольных HTTP-запросов чаще пользуются специализированными HTTP-клиентами. Например, вышеупомянутым curl . У многих скриптовых языков (Python, Ruby) также имеются HTTP-клиенты в стандартной библиотеке, оперирующие типами данных языка и занимающиеся преобразованием в нужные форматы самостоятельно.
Я предполагаю, что вас интересует то, как голый браузер привык общаться по HTTP с помощью одного лишь HTML.
Но на HTML, формах и ссылках мир HTTP не ограничивается. Особенно сейчас, когда веб кишит разнообразными HTTP API и SPA на их основе. Современные браузеры не так просты: с помощью JavaScript они могут связывать практически любой ввод от пользователя с практически любым HTTP-запросом, нужно это лишь реализовать с помощью браузерного скрипта (кроме JavaScript на данный момент нет выбора).
Кроме того, нынче на просторах серверов, бывает, пасутся стада микросервисов, общающиеся (между собой и иногда даже между стадами) на языке HTTP словами на JSON/XML/и т. д. Там браузер не фигурирует ни на одной из сторон.
HTTP (Hyper Text Transport Protocol) - тот самый язык, на котором "разговаривают" браузеры с веб-серверами, важнейший протокол Интернета...
Типы запросов
Запросы можно разделить на два вида :
- GET ;
- POST.
GET используется при наборе адреса сайта в строке браузера или перехода по ссылке. POST служит для отправки форм , например при регистрации на сайте, публикации комментария к статье. Для отправки формы обычно нужно нажать кнопку "Написать" или подобную ей:
Для простоты понимания различие можно представлять так:
- GET используется для чтения сайтов (читаем Интернет);
- POST служит для публикации информации на сайтах (пишем Интернет)
URL и параметры запроса
В обоих случаях требуется URL (Uniform Resource Locator) запрашиваемого документа.
URL
- это адрес
страницы в Интернете. Как правило, он имеет такой вид:
http://<хост>/<путь>
Например
:
http://www.example.ru/about.php
Или же такой, если необходимо передать параметры сценарию:
http://<хост>/<путь>?<параметры>
где <параметры> - это набор пар вида:
<имя>=<значение>
разделенных символом &
.
Пример:
http://www.example.ru/news.php?id=100&show_comments=yes
У вас может возникнуть вопрос : для чего сценарию передавать параметры ? Динамическая страница (она же сценарий), в отличие от статической, может выдавать различную информацию . Например, сценарий новостной ленты отображает либо список анонсов последних новостей, либо целиком текст конкретной статьи. Что именно хочет увидеть пользователь, сценарий понимает, исходя из переданных ему параметров.
Это могло бы работать следующим образом. Получение списка последних новостей: http://www.example.ru/news.php (URL без параметров). Получение полного текста новостной статьи: http://www.example.ru/news.php?id=1 (URL включает в качестве параметра номер новости).
Обработка параметров URL
А сейчас мы напишем сценарий этой самой новостной ленты. У нее будут два режима :
Всего новостей у нас будет три:
- "За качество ответят. Контролировать продукты питания начали по-новому";
- "Варшава не раскрывает перечень возможных мер против Минска";
- "Павел Астахов намерен добиваться отставки ряда чиновников Удмуртии"
Сейчас же нам важно научиться обрабатывать параметры, переданные через URL. Итак, создайте файл news.php :
"; echo "
"; echo "- ";
for ($i = 0; $i < count($news); $i++)
{
echo "
- "; echo ""; echo $news[$i]; echo ""; echo " "; echo "