Каково назначение HTTP-заголовков?

Ответ

HTTP-заголовки (headers) — это пары ключ: значение, которые передают метаданные и управляющую информацию между клиентом и сервером в рамках HTTP-запроса или ответа. Они позволяют "договориться" о формате данных, аутентификации, кэшировании и других аспектах взаимодействия.

Основные категории и примеры заголовков:

  • Аутентификация: Authorization — содержит учетные данные для доступа к защищенному ресурсу.
  • Согласование контента (Content Negotiation): Accept, Content-Type — определяют форматы данных, которые клиент может принять и которые сервер отправляет (например, application/json).
  • Управление кэшированием: Cache-Control, Expires — указывают, как долго ответ может храниться в кэше браузера или прокси-сервера.
  • Управление CORS: Access-Control-Allow-Origin — разрешает кросс-доменные запросы с указанных источников.
  • Cookies: Cookie, Set-Cookie — используются для управления состоянием сессии.

Пример отправки заголовков в Python с помощью requests:

import requests

# Заголовки, отправляемые клиентом на сервер
request_headers = {
    'User-Agent': 'MyCoolApp/1.0',
    'Accept': 'application/json',
    'Authorization': 'Bearer your_api_token'
}

response = requests.get(
    'https://api.example.com/data',
    headers=request_headers
)

# Вывод заголовков, полученных в ответе от сервера
print(response.headers)