HTTP-запрос методом GET.

Одним из способов, как можно отправить запрос по протоколу HTTP к серверу, является запрос методом GET. Этот метод является самым распространенным и запросы к серверу чаще всего происходят с его использованием.
Самый простой способ, как можно создать запрос методом GET- это набрать URL-адрес в адресную строку браузера.

Если у вас есть желание погрузиться в тему серверного программирования глубже, все мои уроки здесь.
Браузер передаст серверу примерно следующую информацию:
GET / HTTP/1.1 Host: site.ru User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:18.0) Gecko/20100101 Firefox/18.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Cookie: wp-settings Connection: keep-alive
Запрос состоит из двух частей:
1. строка запроса (Request Line)
2. заголовки (Message Headers)
Обратите внимание, что GET запрос не имеет тела сообщения. Но, это не означает, что с его помощью мы не можем передать серверу никакую информацию. Это можно делать с помощью специальных GET параметров.
Чтобы добавить GET параметры к запросу, нужно в конце URL-адреса поставить знак «?» и после него начинать задавать их по следующему правилу:
имя_параметра1=значение_параметра1& имя_параметра2=значение_параметра2&…Разделителем между параметрами служит знак «&».
К примеру, если мы хотим передать серверу два значения, имя пользователя и его возраст, то это можно сделать следующей строкой:
http://site.ru/page.php?name=dima&age=27
Когда выполнен данный запрос, данные попадают в так называемую переменную окружения QUERY_STRING, из которой их можно получить на сервере с помощью серверного языка веб-программирования.
Вот пример, как это можно сделать на языке PHP.
"; echo "Ваш возраст: " . $_GET["age"] . "
"; ?>
Конструкция $_GET[«имя_параметра»] позволяет выводить значение переданного параметра.
В результате выполнения этого кода в браузере выведется:
Ваше имя: dima Ваш возраст: 27
Кстати, переходя по какой-либо ссылке, которая оформлена в HTML вот так:
мы тоже выполняем запрос к серверу методом GET.
Все мои уроки по серверному программированию здесь.
Чтобы оставить сообщение, зарегистрируйтесь/войдите на сайт через:
Чем отличаются HTTP-методы GET и POST
HTTP-методы GET и POST — самые распространённые способы отправить или получить данные с сервера. Но в разных случаях оба метода могут быть небезопасными или неудобными в использовании. В этой заметке рассмотрим, какой метод когда использовать.
GET — метод для чтения данных с сайта. Например, для доступа к указанной странице. Он говорит серверу, что клиент хочет прочитать указанный документ. На практике этот метод используется чаще всего, например, в интернет-магазинах на странице каталога. Фильтры, которые выбирает пользователь, передаются через метод GET .
:authority: htmlacademy.ru :method: GET :path: /tutorial/php/http-header
POST — метод для отправки данных на сайт. Чаще всего с помощью метода POST передаются формы.
URL-адрес запроса: https://htmlacademy.ru/ Метод запроса: POST Код состояния: 200
Формат запроса
Протокол HTTP очень прост и состоит, по сути, из двух частей — заголовков и тела запроса или ответа.
Тело запроса — это информация, которую передал браузер при запросе страницы. Но тело запроса присутствует только если браузер запросил страницу методом POST . Например, если отправлена форма, то телом запроса будет содержание формы.

Пример GET-запроса. Информация передаётся прямо в заголовке.
GET /blog/?name1=value1&name2=value2 HTTP/1.1 Host: htmlacademy.ru
Пример POST-запроса. Информация передаётся в теле запроса:
POST /blog/ HTTP/1.1 Host: htmlacademy.ru name1=value1&name2=value2
GET для безопасных действий, POST для опасных
Говоря совсем просто, GET-запросы лучше не использовать с приватной информацией. Вот почему:
- Они кешируются. Это значит, что логин и пароль, переданные через GET-запрос, могут остаться в интернете навсегда, например, в веб-архиве или кеше Гугла.
- Остаются в истории браузера. Чтобы узнать, какие данные отправлялись, достаточно нажать Ctrl+H.
- Сохраняются в закладках и пересылаются. Можно не обратить внимания и опубликовать в соцсетях или отправить ссылку с приватной информацией в GET-запросе.
- Сохраняются в логах сервера. Например, нельзя отправлять данные банковских карт через GET-запрос, так как это создаёт риски для пользователей.
Таким образом, любые важные данные — логины, пароли, данные карты, персональные данные — лучше передавать с помощью метода POST . Также метод POST поддерживает тип кодирования данных multipart/form-data , что позволяет передавать файлы.
Ещё раз коротко
GET
- Фильтры в интернет-магазинах
- Передача параметров через ссылку
- Другие безопасные запросы
POST
- Любые формы с паролями или банковскими картами
- Формы заявок с персональными данными
- Отправка файлов
Полезные материалы
- Тренажёр по работе с методом GET
- Протокол HTTP
- Где смотреть запросы. Вкладка Network в Chrome DevTools
- Механизм безопасной переадресации после POST-запроса (англ.)
«Доктайп» — журнал о фронтенде. Читайте, слушайте и учитесь с нами.
Читать дальше

Как работает протокол HTTP
HTTP был разработан в 1990-х годах для создания первого интерактивного текстового веб-браузера. За эти годы протокол менялся и совершенствовался, становился более гибким и постепенно превратился в современный интернет. В статье рассмотрим принцип работы протокола и что важно знать о нём разработчику.
- 8 февраля 2023

10 популярных функций в MYSQL, которые вам нужно знать
Без лишних слов принесли вам некоторые популярные функции MySQL, без которых вы точно не обойдётесь в работе.
- 17 января 2023

Подключение файлов в PHP. Метод require()
Способность вызывать сценарий из отдельного файла по его имени называется в PHP подключением файлов. Подключают PHP-сценарии, любые текстовые файлы или HTML-страницы.
- 21 ноября 2022

Массивы в PHP
Массив — это ещё один тип данных, вроде числа или строки. Главное отличие массива от остальных типов данных заключается в его способности хранить в переменной больше одного значения. В предыдущих примерах имя переменной всегда ассоциировалось только с одним значением:
- $name = «Иннокентий»
- $age = 42
А если мы хотим узнать не только пол, имя и возраст пользователя, но и, допустим, любимые сериалы? Очень непросто назвать один самый любимый сериал, а вот вспомнить несколько — намного легче. Сохранение в переменную-массив нескольких значений выглядит так:
$fav_shows = ["game of thrones", "american horror story", "walking dead"];
В этом примере мы сохранили в переменной $fav_shows сразу три значения. Но сохранить эти данные — это только половина дела. Как с ними потом работать? Уже знакомый вам способ вывода переменной на экран не будет работать с массивами:
Так увидеть список любимых сериалов не получится. Дело в том, что массив — это не обычная переменная. Массив хранит не простые типы, вроде текста или чисел (их ещё называют «скалярными типами»), а более сложную структуру данных, поэтому здесь нужен особый подход.
Внутри массива у каждого значения есть адрес, по которому к нему можно обратиться. Такой адрес называется индексом. Индекс — это просто порядковый номер значения внутри массива. Индексация начинается с нуля, так что первый элемент получает индекс — 0 , второй — 1 , и так далее.
Чтобы получить определенный элемент массива, необходимо знать его индекс (ключ). Напечатаем названия всех сериалов из массива через запятую:
Теперь можно дать определение массива: Массив — это совокупность множества элементов вида «ключ: значение».
Массивы позволяют перезаписывать существующие значения и добавлять новые. Добавить новое значение в массив можно так:
$fav_shows[] = "the big bang theory";
Новый элемент автоматически получит индекс равный максимальному индексу из существующих + 1. «Теория большого взрыва» сохранится в массиве под индексом 3 .
Если нам перестал нравиться один из сериалов, так как новый сезон оказался очень плох или появился новый фаворит, значения в массиве можно заменить. Чтобы вычеркнуть старое значение и заменить его новым, нужно присвоить новое значение любому из существующих в массиве индексов:
$fav_shows[4] = "fargo";
Для полного удаления (без замены на другое) значения по его индексу существует функция unset :
unset($fav_shows[4]);
- 10 ноября 2022

Синтаксис PHP
Разберёмся, из чего состоит любой язык программирования.
У каждого языка есть правила и конструкции, следуя которым мы выражаем мысли и делаем их понятными для другого человека. В программировании всё точно так же. Но вместо человеческого языка мы используем язык программирования PHP, а в роли нашего собеседника выступает PHP-интерпретатор. Поэтому, чтобы выразить свою мысль, мы должны сделать её понятной для интерпретатора.
- 27 октября 2022
Массивы $_POST и $_GET в PHP. Обработка форм
Формы — это часть языка HTML. Формы нужны для передачи данных от клиента на сервер. Чаще всего формы используются для регистрации пользователей, заполнения анкет, оформления заказа в интернет магазине, и так далее.
Через формы можно отправлять как простую текстовую информацию, так и файлы.
Большую часть времени программирования на PHP вы будете так или иначе работать с формами и данными из них.
HTML описывает то, из каких элементов состоит форма, и как она выглядит. Но без принимающей стороны, то есть сервера, который принимает эти данные и обрабатывает их нужным образом, создавать формы нет никакого смысла.
PHP содержит множество средств для работы с формами. Это позволяет очень просто решать типичные задачи, которые часто возникают в веб-программировании:
- Регистрация и аутентификация пользователя;
- Отправка комментариев на форумах и социальных сетях;
- Оформление заказов.
Практически любой современный сайт содержит как минимум несколько разных HTML-форм.
- 20 октября 2022

Учебник по PHP
- Знакомство с языком
- Что такое PHP
- Синтаксис PHP
- Массивы
- Циклы
- Функции
- Шаблонизация и подключение файлов
- Подключение файлов
- Шаблонизация
- Протокол HTTP и формы
- Протокол HTTP
- Формы
- Уязвимости
- Идентификация пользователя на сайте
- Аутентификация пользователя
- Базы данных
- База данных
- SQL
- MySQL в PHP
- Безопасность в MySQL
- Объекты и использование библиотек
- Объекты
- Библиотеки
- Composer
- 10 сентября 2022

Протокол HTTP и работа с заголовками
Весь современный веб построен на модели взаимодействия клиента и сервера. Как она работает:
- браузер пользователя (клиент) отправляет на сервер запрос с адресом сайта (URL);
- сервер получает запрос и отдаёт клиенту запрошенный контент.
Для реализации процесса используется универсальный протокол HTTP.
- 10 сентября 2022

Защита от SQL-инъекций
Внедрение SQL-кода (SQL инъекция) — один из распространённых способов взлома сайтов, работающих с базами данных. Способ основан на внедрении в запрос произвольного SQL-кода. Внедрение SQL позволяет хакеру выполнить произвольный запрос к базе данных (прочитать содержимое любых таблиц, удалить, изменить или добавить данные).
Атака этого типа возможна, когда недостаточно фильтруются входные данные при использовании в SQL-запросах.
- 10 сентября 2022

Объекты и классы в PHP
Объекты в PHP — это просто ещё один тип данных. Объект позволяет хранить в переменной набор из свойств и их значений, а также встроенные функции. Это делает объекты похожими по своей структуре на ассоциативные массивы. Но отличие от массивов всё-таки есть, и при этом достаточно важное — объекты могут иметь внутреннее состояние.
- 10 сентября 2022
Как для GET метода передать кастомный тип объекта во входных параметрах?
Веб-сервис.
Как для GET метода передать кастомный тип объекта во входных параметрах?
Есть тип:
[DataContract]
public class SomeType [DataMember]
public string path < get; set; >
[DataMember]
public string als < get; set; >
>
[OperationContract]
[WebInvoke(Method = «GET»,
RequestFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
ResponseFormat = WebMessageFormat.Json,
UriTemplate = «/ping/»)]
[return: MessageParameter(Name = «data»)]
public object Pong(string s, SomeType SomeData) return JsonConvert.SerializeObject(SomeData);
>
При попытке отправить гет запрос через постман и передать данные, получаем всегда ответ:
Что по факту равно если вообще не передавать параметр.
Но если мы делаем метод POST и передаем в теле этот же параметр вот так:
То работает, чего я не понимаю?
5 комментариев
2 апреля 2022 20:10
Я не помню, что бы в get запросе можно было передавать тело запроса анонимно, для такого метод post предназначен, а get данные через параметры в url всегда передаются.
можно попробовать принять json из урла , сделав так, но это уже извращение
`?someBody=`?
2 апреля 2022 23:27
Dima Avdoshin,
тело запроса это же просто данные, какая разница что передавать данные если их конечно не много через гет или через пост? особенно если ты хочешь только читать данные
2 апреля 2022 23:35
Dima Avdoshin,
вопрос в тому как передать в гет запросе данные так что бы это потому преобразовалось в объект, потому как с List передается и все норм, я вот думаю в чем разница между Guid и моими типами? скрин приложу как передаю


3 апреля 2022 13:57
Стас Гаврилюк,
к сожалению я не смог сделать так как ты, вероятно может получится с помощью класса обертки (код ниже), где в knowType указываются все возвращаемые типы, можешь назвать его как указано ниже
[DataContract] [KnownType(typeof(OpenIdStatus))] [KnownType(typeof(string))] public class ReturnValue [DataMember] public object Value get; set; > >также для меня работало следующее
/ping/12?someObj=''
тоже самое и с обжектом работает[OperationContract] [WebInvoke(Method = "GET", RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/ping/?someObj=")] [return: MessageParameter(Name = "data")] public dynamic Pong(string s, dynamic SomeData) return JsonConvert.DeserializeObject(SomeData); >параметр ввиде объекта определенного типа не принимает , не смог нагуглить почему, пишет , что
>Операция "Pong" в контракте "WebService1C" содержит переменную запроса с именем
"SomeData" и типом "Terrasoft.Configuration.SomeType", но тип
"Terrasoft.Configuration.SomeType" не является преобразуемым посредством
"QueryStringConverter". Переменные для переменных запроса UriTemplate должны иметь типы, которые могут
преобразовываться при помощи "QueryStringConverter".
Где в get запросе передать входные параметры
Передача нескольких параметров GET выполняется почти при каждом запросе к серверу. Таких параметров не должно быть слишком много, чтобы их легче было контролировать со стороны браузера и сервера. Иначе поисковая система будет воспринимать разные страницы за дубли.
- Что такое GET-параметры
- Какое количество параметров GET считается правильным
- Как просканировать сайт и определить количество GET-параметров
- Заключение
Что такое GET-параметры
GET-запрос — метод передачи данных от клиента к серверу с целью получения информации, указанной с помощью конкретных GET-параметров.
Это публичные данные, доступные при повторном просмотре ссылки в истории. Такой запрос актуально использовать при неизменных данных в адресной строке. То есть при каждом обращении к странице с заданными параметрами ее адрес остается постоянным.
GET-запрос состоит из домена, адреса страницы и параметров, которые следуют после знака «?». Формат одного параметра выглядит так: «ключ=объяснение». Такой вид имеет весь запрос:
http://site.ru/index.php?name=Катя&surname=Ивановагде name — первый параметр, а surname — второй параметр.
Этот же запрос в формате РНР :
’; echo ‘Фамилия: ‘ . $_GET[‘surname’] . ‘
’; ?>,где параметр if определяет условие: если существует параметр name , пусть он выведется на экран.
В результате браузер выдаст такую информацию:
Имя: Катя Фамилия: ИвановаПри передаче личной информации нет надобности использовать GET запрос и параметры по причине отсутствия конфиденциальности. Информация с адресной строки открыта для пользователей.
Применение такого запроса имеет смысл в случае потребности сохранить, отправить ссылку. Для передачи секретной информации лучше использовать запрос типа POST. Страницы, запросы на которые передаются параметром GET, всегда имеют статичный вид.
Какое количество параметров GET считается правильным
Один запрос включает несколько параметров GET. Их количество не ограничено протоколом http. Лимиты в размере запроса есть со стороны сервера и браузера. У каждого из них есть свой максимальный размер для приема/передачи данных. Если длина превысит этот лимит, запрос будет урезан.
Не существует конкретной максимальной величины GET-запроса. Один сервер может принимать максимум 8 Кб, а другой — 16 Кб. Средний размер запроса колеблется в пределах 512-1024 Кб.
Фактически в одном таком запросе должно быть не больше 5 параметров, иначе каждый из них будет сложно контролировать со стороны сервера и браузера. Если нужно передать большое количество информации, рекомендуется использовать метод POST.
При использовании человекопонятных URL (ЧПУ) передача нескольких параметров GET выполняется в скрытом формате. Чтобы увидеть запрос полностью, необходимо на время отключить ЧПУ.