Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PI_lektsii_2016.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
6.12 Mб
Скачать

337

1. Основні технології розробки web-додатків

1.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, яка дозволяє задавати єдині стилі оформлення для безлічі веб-сторінок.

Популярна концепція розвитку мережі Інтернет – створення семантичної павутини. Семантична павутина – це надбудова над існуючою Мережею, яка cтворена для того, чтоб зробити розміщену в ній інформацію зрозумілішою для комп'ютерів.

HTTP (англ. HyperText Transfer Protocol – «протокол передачі гіпертексту») – протокол прикладного рівня передачі даних (спочатку – у вигляді гіпертекстових документів). Основою HTTP є технологія «клієнт-сервер», тобто передбачається існування: споживач (клієнт) – ініціюють з'єднання і надсилають запит; постачальник (сервер) – очікують з'єднання для отримання запиту, виробляють необхідні дії і повертають назад повідомлення з результатом.

Основним об'єктом маніпуляції в HTTP є ресурс, на який вказує URI (англ. Uniform Resource Identifier) ​​в запиті клієнта. Зазвичай такими ресурсами є файли, що зберігаються на сервері, але ними можуть бути логічні об'єкти або щось абстрактне. Особливістю протоколу HTTP є можливість вказати в запиті і відповіді спосіб представлення одного і того ж ресурсу за різними параметрами: формату, кодуванні, мови і т.д. Саме завдяки способу кодування, повідомленнями клієнт і сервер можуть обмінюватися двійковими даними, хоча даний протокол є текстовим. Спрощена схема обміну даними, між клієнтом і сервером приведена на рисунку 1.1.

Рисунок 1.1 - Спрощена схема обміну даними між клієнтом і сервером

Кожне HTTP-повідомлення складається з трьох частин, які передаються в зазначеному порядку:

  1. Стартовий рядок (англ. Starting line) – визначає тип повідомлення.

  2. Заголовки (англ. Headers) – характеризують тіло повідомлення, параметри передачі та інші відомості.

  3. Тіло повідомлення (англ. Message Body) – безпосередньо дані повідомлення. Обов'язково повинно відділятися від заголовків символом нового рядка.

  4. Заголовки і тіло повідомлення можуть бути відсутніми, але стартовий рядок є обов'язковим елементом, так як вказує на тип запиту/відповіді.

  5. 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 ресурсу.

  1. PATCH. Аналогічно PUT, але застосовується тільки до фрагменту ресурсу.

  2. DELETE. Видаляє зазначений ресурс.

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

  4. LINK. Встановлює зв'язок зазначеного ресурсу з іншими.

  5. UNLINK. Прибирає зв'язок зазначеного ресурсу з іншими.

  6. CONNECT. Перетворює з'єднання запиту в прозорий TCP / IP тунель, зазвичай щоб сприяти встановленню захищеному SSL з'єднанню через не зашифрований проксі.

  7. 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 (рос. Заголовки суті) – супроводжують кожну сутність повідомлення.

Саме в такому порядку рекомендується посилати заголовки одержувачу. Найбільш часто в запитах використовуються наступні заголовки:

  1. Content-type – визначає тип переданих даних.

  2. Приклад: Content-Type: text/html; charset=windows-1251

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

Приклад: User-Agent: Mozilla/3.0

  1. 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 |

Код-Розширення

Заголовки відповіді. Поля заголовка відповіді дозволяють серверу передати додаткову інформацію про відповідь, яка не може бути внесені в Стартовий рядок. Ці поля заголовків не призначені для передачі інформації про зміст відповіді, 8ле8данного у відповідь на запит, 8ле там може бути інформація власне про сервер.

Найбільш часто у відповідях використовуються наступні заголовки:

  1. Date – вказує браузеру дату і час відправки документа.

  2. Приклад: Date: Mon, 10 Jan 2011 11:22:23 GMT

  3. Server – вказує браузеру тип сервера і іншу інформацію про сервісне програмне забезпечення. Приклад: Server: Apache/1.3.9 (Unix) PHP/5.0

  4. Location – цей заголовок визначає, що браузер повинен негайно перейти за вказаною адресою, не чекаючи тіла документа.

Приклад: Location: http://www.myhtml/index.html

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