В каком месте HTTP-запроса передаются данные при использовании метода POST?

«В каком месте HTTP-запроса передаются данные при использовании метода POST?» — вопрос из категории HTTP и веб-протоколы, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В POST-запросе данные передаются в теле запроса (body), а не в строке URL (как в GET-запросах). Это позволяет отправлять большие объемы данных и обеспечивает лучшую безопасность, так как содержимое не отображается в адресной строке браузера и не сохраняется в истории.

Почему это важно?

  • Безопасность: Конфиденциальные данные (пароли, токены) не видны в URL.
  • Объем: Нет ограничений длины, накладываемых на URL.
  • Типы данных: Можно передавать не только текст, но и бинарные данные (файлы).

Пример HTTP-запроса:

POST /api/login HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 27

username=johndoe&password=secret

Практический пример на Python с requests:

import requests

# Отправка данных формы
url = 'https://api.example.com/login'
form_data = {'username': 'johndoe', 'password': 'secret'}
response = requests.post(url, data=form_data)

# Отправка JSON
json_data = {'title': 'Post', 'body': 'Content', 'userId': 1}
response = requests.post(url, json=json_data)

Основные форматы тела запроса (указываются в заголовке Content-Type):

  • application/x-www-form-urlencoded (стандартные формы)
  • application/json (структурированные данные API)
  • multipart/form-data (загрузка файлов)