Ответ 1
(Ниже приведен текст связанного раздела записи в Википедии.)
Структура
Типичный URL-адрес, содержащий строку запроса, выглядит следующим образом:
http://server/path/program?query_string
Когда сервер получает запрос на такую страницу, он запускает программу (если она настроена для этого), передавая query_string без изменений в программу. Значок вопроса используется как разделитель и не является частью строки запроса.
Ссылка на веб-странице может содержать URL-адрес, содержащий строку запроса, однако HTML определяет три способа, которыми веб-браузер может генерировать строку запроса:
- веб-форму через элемент...
- карта изображения на стороне сервера через атрибут ismap для элемента со конструкцией
- индексированный поиск через устаревший элемент
Веб-формы
Основное использование строк запроса состоит в том, чтобы содержать содержимое HTML-формы, также известную как веб-форма. В частности, когда представлена форма, содержащая поля field1, field2, поле 3, содержимое полей кодируется как строка запроса следующим образом:
field1=value1&field2=value2&field3=value3...
- Строка запроса состоит из пары пар значений поля.
- В каждой паре имя и значение поля разделяются знаком равенства. Знак равенства может быть опущен, если значение представляет собой пустую строку.
- Ряд пар разделяется амперсандом, '&' (или точки с запятой, ';' для URL-адресов, встроенных в HTML и не сгенерированных с помощью..., см. ниже). Хотя нет окончательного стандарта, большинство веб-фреймворков позволяют связать несколько значений с одним полем:
field1=value1&field1=value2&field1=value3...
Для каждого поля формы строка запроса содержит пару field = value. Веб-формы могут включать поля, которые не видны пользователю; эти поля включаются в строку запроса при отправке формы
Это соглашение является рекомендацией W3C. W3C рекомендует, чтобы все веб-серверы поддерживали разделители с запятой в дополнение к амперсандам и разделителям [6], чтобы разрешить строки запроса /x -www-form-urlencoded в URL-адресах в документах HTML, не удаляя амперсанды.
Технически, содержимое формы кодируется только как строка запроса, когда метод отправки формы - GET. Такое же кодирование используется по умолчанию, когда метод отправки POST, но результат не отправляется как строка запроса, то есть не добавляется к URL-адресу действия формы. Скорее, строка отправляется как тело HTTP-запроса.