Клиент
Оригинальное название: client
Коротко
Программа или устройство, которое само отправляет запрос серверу и получает ответ: браузер, мобильное приложение, скрипт, другой сервис.
Что такое «Клиент»
В клиент-серверной модели роли распределены по тому, кто начинает разговор. Клиент инициирует запрос, сервер ждёт обращений и отвечает. Одна и та же программа может выступать в обеих ролях: сайт на PHP — сервер для браузера посетителя, но клиент, когда сам обращается к API платёжной системы или CRM.
Самый привычный клиент — веб-браузер. Кроме него, это мобильные приложения, почтовые программы, боты в мессенджерах, консольные утилиты вроде curl и серверные скрипты, которые забирают данные у других сервисов.
Пример: что отправляет клиент
Запрос браузера или любого HTTP-клиента — это текст с методом, адресом и заголовками. Например, так клиент просит у сайта на WordPress пять последних записей через REST API:
GET /wp-json/wp/v2/posts?per_page=5 HTTP/1.1
Host: example.ru
Accept: application/json
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Заголовок User-Agent сообщает, что за клиент пришёл, но это лишь слова самого клиента: подделать его может любой скрипт.
Тонкий и толстый клиент
Тонкий клиент почти ничего не делает сам: показывает то, что прислал сервер. Классический сайт с серверной генерацией страниц — пример тонкого клиента. Толстый клиент берёт на себя логику: одностраничное приложение на JavaScript само строит интерфейс, хранит состояние и обращается к серверу только за данными. Оно быстрее реагирует на действия пользователя, но тяжелее загружается и сложнее для поисковой индексации.
Почему клиенту нельзя доверять
Всё, что пришло от клиента, может быть подделано: цена в форме заказа, скрытое поле, cookie, заголовок, проверка на JavaScript. Проверки в браузере нужны для удобства — подсказать, что телефон введён неверно. Но решающая проверка всегда повторяется на сервере. Классическая уязвимость интернет-магазина — сервер берёт цену товара из запроса клиента, а не из своей базы, и покупатель оформляет заказ за копейки.

