1. Протокол HTTP. Введення, Протоколи HTTP, FTP, PHP, статті

Відразу хочу уточнити одну маленьку річ. Страшне слово протокол є не що
інше, як угода безлічі людей, просто в один прекрасний момент люди
вирішили: "Давайте будемо робити так, і тоді все буде в порядку". Боятися нема чого,
все просто до неподобства і це неподобство ми зараз будемо розкривати. Отже, що
ж це таке протокол HTTP і з чим його їдять?


1.1 Клієнт і сервер


Чудес в світі, а тим більше в світі программізма і інтернету не буває! Засвойте
це як непорушну істину. І, якщо програма не працює або працює не так як
хочеться, то, значить, швидше за все, вона або написана не правильно, або містить
помилки. Отже, як же все-таки браузер просить сервер надіслати йому хоч
що-небудь? Та дуже просто! Треба тільки трохи розслабитися і почати отримувати
задоволення від процесу 🙂


1.2. Пишемо наш перший HTTP запит


Якщо Ви думаєте, що все дуже складно, то Ви помиляєтеся. Людина так
влаштований, що просто не здатний створювати щось складне, інакше він сам в цьому
заплутається 🙂 Отже, є браузер і є Web-сервер. Ініціатором обміну даними
завжди виступає браузер. Web-сервер нікому, ніколи просто так нічого не
пошле, щоб він щось відправив браузеру – треба, щоб браузер про це
попросив. Найпростіший HTTP запит миє виглядати, наприклад, так:

GET http://www.php.net/ HTTP/1.0



Ви можете виконати цей запит дуже просто. Запустіть програму
telnet.exe, введіть в якості хоста www.php.net, вкажіть порт 80, і просто
наберіть даний запит, натиснувши два рази Enter в якості

. У відповідь ви
отримаєте HTML код головної сторінки сайту www.php.net.


1.3 Структура запиту


Розглянемо, з чого складається HTTP запит. Все досить просто. Почнемо з
того, що HTTP запит – це цілком осмислений текст. З чого ж він полягає в
загальному випадку? Будемо розглядати протокол HTTP 1.0. Отже:

Request-Line [ General-Header | Request-Header |
Entity-Header ]
[ Entity-Body ]



Нам вкрай цікаві методи обробки GET і POST. Методом GET можна просто
передати параметри в скрипт, а методом POST можна емулювати submit форми.

Для методу GET, Request-URI може виглядати, наприклад, так:
“/index.html?param1=1&param2=2”.


А тепер після таких страшних слів давайте спробуємо трохи заспокоїтися і
зрозуміти, що ж нам треба? Розуміти ми природно будемо на прикладах.

Давайте уявимо, що нам треба отримати сторінку сайту, передавши Cookies
(Печеньки), інакше нас просто пошлють як незваних гостей, і більше того,
відомо, що на дану сторінку пускають тільки після того, як Ви побували на
головній сторінці сайту.


2 Метод GET


Напишемо наш запит.

GET http://www.site.ru/news.html
HTTP/1.0

Host: www.site.ru

Referer:
http://www.site.ru/index.html

Cookie: income=1



Даний запит говорить нам про те, що ми хочемо отримати вміст сторінки за
адресою http://www.site.ru/news.html, використовую метод GET. Поле Host говорить про
те, що дана сторінка знаходиться на сервері www.site.ru, поле Referer говорить
про те, що за новинами ми прийшли з головної сторінки сайту, а поле Cookie
говорить про те, що нам була присвоєна така-то кука. Чому так важливі поля Host,
Referer та Сookie? Тому що нормальні програмісти при створенні динамічних
сайтів перевіряють дані поля, які з'являються в скриптах (РНР в тому числі) в
вигляді змінних. Для чого це треба? Для того, наприклад, щоб сайт не грабували,
тобто НЕ нацьковували на нього програму для автоматичного скачування, або для
того, щоб зайшов на сайт людина завжди потрапляв би на нього тільки з головною
сторінки і.т.д.

Тепер давайте уявимо, що нам треба заповнити поля форми на сторінці та
відправити запит з форми, нехай в даній формі буде два поля: login і password
(Логін і пароль), – і, ми природно знаємо логін і пароль.


GET
http://www.site.ru/news.html?login=Petya% 20Vasechkin & password = qq
HTTP/1.0

Host: www.site.ru

Referer:
http://www.site.ru/index.html

Cookie: income=1




Логін у нас "Petya Vasechkin" Чому ж ми повинні писати Petya% 20Vasechkin?
Це з = за того, що спеціальні символи можуть бути розпізнані сервером, як
ознаки наявності нового параметра або кінця запиту і.т.д. Тому існує
алгоритм кодування імен параметрів та їх значень, щоб уникнути оштбочних
ситуацій у запиті. Повний опис даного алгоритму можна знайти Тут

Про запитах інших типів можна прочитати в офіційній специфікації протоколу
HTTP 1.0

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Метки: , , , , , ,
Рубрики: FTP, Протоколи HTTP

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*