Ответ
Для передачи логин-пароля в HTTP-запросе обычно используют:
- Headers (Basic Auth):
val credentials = "login:password".toByteArray().base64()
val authHeader = "Basic $credentials"
request.addHeader("Authorization", authHeader)
- Body (POST-запрос):
{
"username": "login",
"password": "password"
}
- Query params (не рекомендуется из-за безопасности):
https://api.com/login?user=login&pass=password
Лучший вариант - HTTPS POST с данными в теле запроса. Basic Auth в headers тоже допустим, но требует кодирования base64. Никогда не передавайте пароли открытым текстом в URL!
Ответ 18+ 🔞
Э, слушай, вот смотри, тут народ постоянно путается, как эти самые логин-пароль в запросе сувать. Ёпта, дело-то вроде простое, но тут овердохуища вариантов, и половина из них — полная дичь.
Ну, основные способы вот такие, держи:
-
Запихнуть в заголовки (этот Basic Auth).
Выглядит умно, но под капотом — просто кодировка base64, которая нихуя не шифрование, так что без HTTPS это как на Красной площади голым плясать. Делается так:val credentials = "login:password".toByteArray().base64() val authHeader = "Basic $credentials" request.addHeader("Authorization", authHeader)Главное помни: base64 — это не про безопасность, это про то, чтобы спецсимволы не сломали заголовок. Все равно что написать пароль на бумажке и сунуть её в прозрачный конверт.
-
Отправить в теле запроса (чаще всего в POST).
Самый нормальный и распространённый способ, особенно для форм логина. Чистая JSON-ка:{ "username": "login", "password": "password" }Работает по HTTPS — и все довольны. Удивление пиздец, но это действительно правильный путь.
-
Воткнуть прямо в URL как query-параметры (НО ЭТО ПИЗДЕЦ КАК НЕ НАДО!).
Типаhttps://api.com/login?user=vasya&pass=secret123.
Чувак, если ты так делаешь, у меня терпения ноль, ебать. Это же полный распиздяйский подход: пароль светится в логах сервера, в истории браузера, его любой промежуточный сервер увидит. Никогда. Не делай. Так. Даже не думай об этом, выбрось эту идею из головы, как будто её и не было.
Короче, резюме такое: лучше всего — HTTPS POST с данными в теле. Basic Auth в заголовках тоже сойдёт, если ты понимаешь, что это просто кодировка, а не шифр. А всё остальное — это мартышлюшка какая-то, даже не рассматривай. И запомни раз и навсегда: открытым текстом в URL — это прям залупа конская, так не делают.