Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
voprosy_k_ekzamenu_c_otvetami.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
418.93 Кб
Скачать
  1. Методы передачи данных get и post.

Передача данных серверу и CGI-сценариям

Для работы сценарию нужно передать определенные параметры, он их обработает и возвратит ответ.

Алгоритм любой CGI-программы выглядит следующим образом:

  1. Получить данные, переданные пользователем

  2. Обработать данные

  3. Вывести результат

Передача данных пользователя осуществляется с помощью форм.

Рассмотрим небольшую форму, передающую имя пользователя:

<form action=/cgi-bin/pr.cgi method=get>

<input type=”text” name=”user_name”>

<input type=”submit” name=”go” value=”Go!”>

</form>

Когда пользователь введет имя и нажмет кнопку «Go», данное имя будет передано сценарию pr.cgi в качестве параметра. Этот параметр будет называться user_name. Метод передачи данных задается параметром Method тега <form>. После того, как будет нажата кнопка «Go», в поле Адрес браузера будет показано примерно следующее:

http://localhost/cgi-bin/pr.cgi?user_name=X&go=Go

После того, как параметры переданы сценарию, задача сценария состоит в том, чтобы выполнить разбор строки, то есть выделить пары Имя_параметра=значение.

Метод GET

Когда мы вводим в адресной строке браузера строку string, браузер последовательно выполняет следующие действия:

  1. Выделяет из нее имя сервера и порт (если он указан)

  2. Устанавливает соединение с сервером и посылает ему запрос:

GET string HTTP/1.0\n

……

\n\n

В запросе \n означает перевод на новую строку, а \n\n – маркер окончания запроса. Если сервер не получит маркера окончания, то запрос обрабатывать не будет.

После строки, начинающейся со слова GET (так называемой GET-строки) в запросе могут содержаться другие строки. Эти строки называются заголовками, как и сама GET-строка. Заголовков может быть довольно много. Их формирует браузер.

Если браузер вызывает сценарий, то, как правило, он передает ему какие-нибудь параметры:

GET сценарий?параметр1=значение&параметр2=значение HTTP/1.0\n

После имени запрашиваемого документа следует знак вопроса, а за ним строка параметров.

Формирование ответа сервером

Для обработки данных, переданных серверу необходимо получить их значение при помощи переменных окружения. Например, переменная окружения QUERY_STRING содержит строку передаваемых параметров. Для обращения к переменным окружения в С, например используется функция getenv(). После считывания значения переменной окружения QUERY_STRING нужно запрограммировать «разбор» пар параметр=значение.

Метод POST

Если используется метод POST, переданные сценарию параметры не отображаются в адресной строке браузера. И сама передача данных происходит иначе:

POST сценарий HTTP/1.0\n

Content-length:5\n

\n

Hello

Как видите, сам блок пересылаемых данных находится уже после маркера окончания запроса. При такой передаче данных сервер никак их не интерпретирует, а сразу передает сценарию. Это означает, что сценарий будет запущен сразу же после окончания заголовков и сервер просто передает ему POST-данные. Затем сценарий должен самостоятельно прочитать определенное число байтов, указанное в заголовке Content-length.

Метод POST обычно используется для передачи больших объемов данных, например, при загрузке файлов на сервер или же когда нужно скрыть значения передаваемых параметров от глаз пользователя. Дело в том, что передаваемые параметры и их значения не отображаются в окне браузера, как это происходит с методом GET.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]