HTTP / 1.0 використовується також для комунікацій між різними призначеними для користувача броузерами (клієнтами) і шлюзами, що дають гіпермедіа доступ до існуючих Internet протоколів, таким як SMTP, NNTP, FTP, Gopher, WAIS. HTTP / 1.0 розроблений так, щоб дозволяти таким шлюзів через proxy сервери, без будь-якої втрати передавати дані за допомогою згаданих протоколів більш ранніх версій.
HTTP ґрунтується на парадигмі запитів / відповідей. Запитуюча програма (клієнт) встановлює зв'язок з обслуговуючою програмою-одержувачем (сервер) і надсилає запит серверу в наступній формі:
- метод запиту,
- URL,
- версія протоколу,
- MIME-подібне повідомлення, що містить керуючу інформацію запиту (параметри), інформацію про клієнта і, можливо, тіло повідомлення.
Все, що передує тілу повідомлення, є заголовком запиту.
Сервер відповідає повідомленням, що містить рядок статусу (включаючи версію протоколу і код статусу - успіх або помилка), за якою слідує MIME-подібне повідомлення, що включає в себе інформацію про сервер, метаінформацію про зміст відповіді, і, ймовірно, саме тіло відповіді.
В Internet комунікації звичайно ґрунтуються на TCP / IP протоколах. Для WWW номер порту за замовчуванням - TCP: 80, але також можуть бути використані і інші номери портів - це не виключає можливості використовувати HTTP як протокол верхнього рівня.
Для більшості додатків сеанс зв'язку відкривається клієнтом для кожного запиту і закривається сервером після закінчення відповіді на запит. Проте, це не є особливістю протоколу. І клієнт, і сервер повинні мати можливість закривати сеанс зв'язку, наприклад, в результаті якого-небудь дії користувача. У будь-якому випадку, розрив зв'язку, ініційований будь-якою стороною, перериває поточний запит, незалежно від його статусу.
Accept - тип даних, які може прийняти браузер (в кодуванні MIME).
Accept-Language - бажана мова, на якому браузер хоче прийняти дані. User-Agent - тип програми, яка відіслала запит.
Cookie - кукіси (дані, які були збережені сервером на локальному диску клієнта, при відвідуванні даного хоста минулого разу).
Набір параметрів запиту не фіксований. Крім наведених, можуть бути присутні й інші параметри.
Найбільш цікаві такі параметри, як referer і cookie. Ці параметри використовуються, в основному, для ідентифікації користувача сервером.
GET
Такий тип передачі даних серверу зручний, проте має обмеження на обсяг. Занадто великі масиви даних передавати через URL не можна. Для таких цілей існує інший тип зпросов: запит POST. Запит POST дуже схожий на GET. з тією лише різницею, що дані в запиті POST передаються окремо від самого заголовка запиту:
Тіло запиту має відділятися від заголовка порожнім рядком. Якщо сервер зустрічає порожній рядок в POST запиті, то все що йде далі він вважає тілом запиту (переданими даними). Відзначимо наступне: формат даних в тілі POST запиту довільний. Незважаючи на те, що найчастіше застосовується CGI формат, він не обов'язковий. Крім того, POST запит не вимагає наявності тіла запиту, і може передавати дані також і через URL.
Крім CGI формату, іноді для передачі великих обсягів інформації (наприклад файлів) застосовують т.зв. multipart формат (формат переданих даних визначається параметром Content-Type):