Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Internet-programmirovanie / Лекция1_new.doc
Скачиваний:
30
Добавлен:
10.02.2016
Размер:
186.88 Кб
Скачать

15

Разработка  WEB-приложений

Лекция1: Основные технологии разработки WEB-приложений

Изучаемые вопросы

  1. Информация о курсе

  2. Протокол HTTP

  3. Основные технологии разработки WEB-приложений

  1. Информация о курсе

Полный объем курса 156 часа (4,5 кредита)

Аудиторных занятий 66 часов

СРС 90 часов

Лекции – 36 часов (18 лекций)

Лабораторные работы - 18 часов (9 ЛР)

РГР - 23

Модулей -2

Экзамен

  1. Протокол http

Всемирная паутина (World Wide Web) – это распределенная система, предоставляющая доступ к связанным между собой документам, расположенным на различных компьютерах, подключенных к Интернету.

Обмен информацией в WWW осуществляется с помощью гипертекстовых файлов. Гипертекстовый файл – это обычный текстовый файл, дополненный элементами разметки в соответствии с языком гипертекстовой разметки HTML(HyperText Markup Language). После того, как HTML-файл становится доступен веб-серверу, его начинают называть "веб-страницей". Набор веб-страниц образует веб-сайт. В гипертекст веб-страниц добавляются гиперссылки. Гиперссылки помогают пользователям Всемирной паутины легко перемещаться между ресурсами (файлами) вне зависимости от того, находятся ресурсы на локальном компьютере или на удаленном сервере. Гиперссылки в Веб основаны на технологии URL.

В целом можно заключить, что Всемирная паутина стоит на "трех китах":

  • язык гипертекстовой разметки документов HTML (HyperText Markup Language);

  • универсальный способ адресации ресурсов в сети URI (Universal Resource Identifier);

  • протокол обмена гипертекстовой информацией HTTP (HyperText Transfer Protocol).

В последнее время кроме HTML используются и более современные технологии разметки: XHTML и XML. XML (eXtensible Markup Language) позиционируется как фундамент для других языков разметки. Для улучшения визуального восприятия Веба стала широко применяться технология CSS, которая позволяет задавать единые стили оформления для множества веб-страниц.

Популярная концепция развития сети Интернет – создание семантической паутины. Семантическая паутина – это надстройка над существующей Сетью, которая призвана сделать размещенную в ней информацию более понятной для компьютеров.

HTTP (англ. HyperText Transfer Protocol — «протокол передачи гипертекста») — протокол прикладного уровня передачи данных (изначально — в виде гипертекстовых документов). Основой HTTP является технология «клиент-сервер», то есть предполагается существование потребителей (клиентов), которые инициируют соединение и посылают запрос, и поставщиков (серверов), которые ожидают соединения для получения запроса, производят необходимые действия и возвращают обратно сообщение с результатом.

Основным объектом манипуляции в HTTP является ресурс, на который указывает URI (англ. Uniform Resource Identifier) в запросе клиента. Обычно такими ресурсами являются хранящиеся на сервере файлы, но ими могут быть логические объекты или что-то абстрактное. Особенностью протокола HTTP является возможность указать в запросе и ответе способ представления одного и того же ресурса по различным параметрам: формату, кодировке, языку и т. д. Именно благодаря возможности указания способа кодирования сообщения клиент и сервер могут обмениваться двоичными данными, хотя данный протокол является текстовым.

Упрощенная схема обмена данными между клиентом и сервером приведена на Рис. 1.1.

Рис.1.1 Упрощенная схема обмена данными между клиентом и сервером

Каждое HTTP-сообщение состоит из трёх частей, которые передаются в указанном порядке:

Стартовая строка (англ. Starting line) — определяет тип сообщения;

Заголовки (англ. Headers) — характеризуют тело сообщения, параметры передачи и прочие сведения;

Тело сообщения (англ. Message Body) — непосредственно данные сообщения. Обязательно должно отделяться от заголовков пустой строкой.

Заголовки и тело сообщения могут отсутствовать, но стартовая строка является обязательным элементом, так как указывает на тип запроса/ответа.

HTTP – запрос

Запрос - это сообщение, посылаемое клиентом серверу.

Стартовая строка запроса выглядит так:

Метод URI HTTP/Версия — для остальных версий.

Здесь:

Метод (англ. Method) — название запроса, одно слово заглавными буквами.

URI определяет путь к запрашиваемому документу.

Версия (англ. Version) — пара разделённых точкой арабских цифр. Например: 1.0.

Например,

GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1

Метод

В поле Метод указывается метод, который должен быть применен к ресурсу, идентифицируемому URI-Запроса. Названия методов чувствительны к регистру.

В настоящее время используются следующие методы: GET, HEAD, PUT, POST, DELETE, LINK, UNLINK, OPTIONS, TRACE, CONNECT

Существующий список методов может быть расширен.

GET

Используется для запроса содержимого указанного ресурса. С помощью метода GET можно также начать какой-либо процесс. В этом случае в тело ответного сообщения следует включить информацию о ходе выполнения процесса.

Клиент может передавать параметры выполнения запроса в URI целевого ресурса после символа «?»:

GET /path/resource?param1=value1&param2=value2 HTTP/1.1

Кроме обычного метода GET, различают ещё условный GET и частичный GET. Условные запросы GET содержат заголовки If-Modified-Since, If-Match, If-Range и подобные. Частичные GET содержат в запросе Range. Порядок выполнения подобных запросов определён стандартами отдельно.

HEAD

Аналогичен методу GET, за исключением того, что в ответе сервера отсутствует тело. Запрос HEAD обычно применяется для извлечения метаданных, проверки наличия ресурса (валидация URL) и чтобы узнать, не изменился ли он с момента последнего обращения.

POST

Применяется для передачи пользовательских данных заданному ресурсу. Например, в блогах посетители обычно могут вводить свои комментарии к записям в HTML-форму, после чего они передаются серверу методом POST и он помещает их на страницу. При этом передаваемые данные (в примере с блогами — текст комментария) включаются в тело запроса. Аналогично с помощью метода POST обычно загружаются файлы на сервер.

PUT

Применяется для загрузки содержимого запроса на указанный в запросе URI. Если по заданному URI не существовало ресурса, то сервер создаёт его и возвращает статус 201 (Created). Если же был изменён ресурс, то сервер возвращает 200 (Ok) или 204 (No Content).

Фундаментальное различие методов POST и PUT заключается в понимании предназначений URI ресурсов. Метод POST предполагает, что по указанному URI будет производиться обработка передаваемого клиентом содержимого. Используя PUT, клиент предполагает, что загружаемое содержимое соответствует находящемуся по данному URI ресурсу.

PATCH

Аналогично PUT, но применяется только к фрагменту ресурса.

DELETE

Удаляет указанный ресурс.

TRACE

Возвращает полученный запрос так, что клиент может увидеть, какую информацию промежуточные сервера добавляют или изменяют в запросе.

LINK

Устанавливает связь указанного ресурса с другими.

UNLINK

Убирает связь указанного ресурса с другими.

CONNECT

Преобразует соединение запроса в прозрачный TCP/IP туннель, обычно чтобы содействовать установлению защищенному SSL соединению через не шифрованный прокси.

OPTIONS

Используется для определения возможностей веб-сервера или параметров соединения для конкретного ресурса. В ответ серверу следует включить заголовок Allow со списком поддерживаемых методов. Также в заголовки ответа может включаться информация о поддерживаемых расширениях.

Для того чтобы узнать возможности всего сервера, клиент должен указать в URI звёздочку — «*». Запросы «OPTIONS * HTTP/1.1» могут также применяться для проверки работоспособности сервера (аналогично «пингованию») и тестирования на предмет поддержки сервером протокола HTTP версии 1.1.

Заголовки запроса

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

Примеры заголовков:

Server: Apache/2.2.11 (Win32) PHP/5.3.0

Last-Modified: Sat, 16 Jan 2010 21:16:42 GMT

Content-Type: text/plain; charset=windows-1251

Content-Language: ru

В примере выше каждая строка представляет собой один заголовок. При этом то, что находится до первого двоеточия, называется именем (англ. name), а что после неё — значением (англ. value).

Все заголовки разделяются на четыре основных группы:

General Headers (русск. Основные заголовки) — должны включаться в любое сообщение клиента и сервера.

Request Headers (русск. Заголовки запроса) — используются только в запросах клиента.

Response Headers (русск. Заголовки ответа) — только для ответов от сервера.

Entity Headers (русск. Заголовки сущности) — сопровождают каждую сущность сообщения.

Именно в таком порядке рекомендуется посылать заголовки получателю.

Наиболее часто в запросах используются следующие заголовки.

Content-type

Этот заголовок определяет тип передаваемых данных.

Пример:

Content-Type: text/html; charset=windows-1251

User-Agent

Поле заголовка User-Agent содержит информацию о пользовательском агенте, пославшем запрос. Данное поле используется для статистики, прослеживания ошибок протокола, и автоматического распознавания пользовательских агентов.

Пример:

User-Agent: Mozilla/3.0

Referer

Строка, отражающая интернет-адрес (URL) документа, содержащего ссылку, по которой пользователь нашёл данный документ.

Язык разметки HTML позволяет задавать необходимые значения заголовков HTTP внутри <HEAD> с помощью тэга <META>. При этом название заголовка указывается в атрибуте http-equiv, а значение — в content. Почти всегда выставляется значение заголовка Content-Type с указанием кодировки чтобы избежать проблем с отображением текста браузером. Так же не лишним является указание значения заголовка Content-Language:

<html>

<head>

<meta http-equiv="Content-Type" content="text/html;charset=windows-1251">

<meta http-equiv="Content-Language" content="ru">

...

HTTP ответ

Структура ответа

После получения и интерпретации запроса, сервер посылает ответ, структура котрого аналогична структуре запроса (стартовая строка, заголовки, тело ответа)

Стартовая строка

Стартовая строка ответа состоит из версии протокола, за которой следует цифровой код статуса и ассоциированное с ним текстовое предложение. Все элементы стартовой строки разделяются пробелами.

Например,

HTTP/1.1 200 OK

Код статуса

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

Первая цифра Кода статуса предназначена для определения класса ответа. Последние две цифры не выполняют никакой категоризирующей роли. Существует 5 значений для первой цифры:

1xx: Информационный - Не используется, но зарезервирован для использования в будущем

2xх: Успех - Запрос был полностью получен, понят, и принят к обработке.

3xx: Перенаправление - Клиенту следует предпринять дальнейшие действия для успешного выполнения запроса. Необходимое дополнительное действие иногда может быть выполнено клиентом без взаимодействия с пользователем, но настоятельно рекомендуется, чтобы это имело место только в тех случаях, когда метод, использующийся в запросе безразличен (GET или HEAD).

4xx: Ошибка клиента - Запрос, содержащий неправильные синтаксические конструкции, не может быть успешно выполнен. Класс 4xx предназначен для описания тех случаев, когда ошибка была допущена со стороны клиента.

5xx: Ошибка Сервера - Сервер не смог дать ответ на корректно поставленный запрос. В этих случаях сервер либо знает, что он допустил ошибку, либо не способен обработать запрос. За исключением ответов на запросы HEAD, сервер посылает описание ошибочной ситуации и то, является ли это состояние временным или постоянным, в теле ответа.

Некоторые значения Кодов статуса и соответствующие им текстовые предложения приведены ниже.

Статус-Код = "100"; Продолжать, Continue

"101"; Переключение протоколов, Switching Protocols

"200"; OK

"201"; Created

"202" ; Accepted

"203" ; Provisional Information |

"204" ; No Content |

"300" ; Multiple Choices |

"301" ; Moved Permanently |

"302" ; Moved Temporarily |

"303" ; Method |

"304" ; Not Modified |

"400" ; Bad Request |

"401" ; Unauthorized |

"402" ; Payment Required |

"403" ; Forbidden |

"404" ; Not Found |

"405" ; Method Not Allowed |

"406" ; None Acceptable |

"407" ; Proxy Authentication Required |

"408" ; Request Timeout |

"409" ; Conflict |

"410" ; Gone |

"500" ; Internal Server Error |

"501" ; Not Implemented |

"502" ; Bad Gateway |

"503" ; Service Unavailable |

"504" ; Gateway Timeout |

Код-Расширения

Заголовки ответа

Поля заголовка ответа позволяют серверу передать дополнительную информацию об ответе, которая не может быть внесена в Стартовую строку. Эти поля заголовков не предназначены для передачи информации о содержании ответа, передаваемого в ответ на запрос, но там может быть информация собственно о сервере.

Наиболее часто в ответах используются следующие заголовки.

Date

Указывает браузеру дату и время отправки документа.

Пример:

Date: Mon, 10 Jan 2011 11:22:23 GMT

Server

Указывает браузеру тип сервера и другую информацию о серверном программном обеспечении

Пример:

Server: Apache/1.3.9 (Unix) PHP/5.0

Location

Этот заголовок определяет, что браузер должен немедленно перейти по указаному адресу, не дожидаясь тела документа

Пример:

Location: http://www.myhtml/index.html

Соседние файлы в папке Internet-programmirovanie