Вопрос проверяет понимание механизмов передачи данных для аутентификации в протоколе HTTP, что необходимо для безопасной разработки веб-приложений.
Веб-приложениям необходимо идентифицировать пользователя при каждом запросе к защищённым ресурсам. Для этого данные аутентификации передаются от клиента (браузера или другого клиента) к серверу. Основные места их передачи — это заголовки HTTP, тело запроса и, реже, параметры URL.
Authorization: <Тип> <Данные>. Например, для JWT-токена: Authorization: Bearer eyJhbGciOiJIUzI1NiIs....sessionid), которую браузер автоматически прикрепляет к каждому последующему запросу в заголовке Cookie. Это классический подход для веб-сайтов с сессиями.application/x-www-form-urlencoded.?token=abc) крайне не рекомендуется, так как URL может попасть в логи сервера и историю браузера.Вот как может выглядеть отправка аутентифицированного запроса с использованием JavaScript (Fetch API):
// Использование Bearer токена в заголовке Authorization
const token = 'your_jwt_token_here';
fetch('https://api.example.com/protected-data', {
method: 'GET',
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
}
})
.then(response => response.json())
.then(data => console.log(data));
// Запрос с куками отправляется автоматически браузером,
// если куки установлены для домена api.example.com.Authorization с Bearer-токенами (JWT, OAuth).Basic <base64(login:password)>. Сейчас применяется редко, в основном в простых сценариях или внутренних системах.Вывод: Для современных API и одностраничных приложений предпочтительным методом является передача токена в заголовке Authorization. Для классических веб-сайтов с серверным рендерингом удобно использовать сессионные куки. Ключевое правило — никогда не передавайте чувствительные данные аутентификации (особенно долгоживущие токены) через URL из-за рисков безопасности.