В какой части HTTP запроса будешь передавать логин и пароль

Ответ

Для передачи логин-пароля в HTTP-запросе обычно используют:

  1. Headers (Basic Auth):
val credentials = "login:password".toByteArray().base64()
val authHeader = "Basic $credentials"
request.addHeader("Authorization", authHeader)
  1. Body (POST-запрос):
{
  "username": "login",
  "password": "password"
}
  1. Query params (не рекомендуется из-за безопасности):
https://api.com/login?user=login&pass=password

Лучший вариант - HTTPS POST с данными в теле запроса. Basic Auth в headers тоже допустим, но требует кодирования base64. Никогда не передавайте пароли открытым текстом в URL!

Ответ 18+ 🔞

Э, слушай, вот смотри, тут народ постоянно путается, как эти самые логин-пароль в запросе сувать. Ёпта, дело-то вроде простое, но тут овердохуища вариантов, и половина из них — полная дичь.

Ну, основные способы вот такие, держи:

  1. Запихнуть в заголовки (этот Basic Auth).
    Выглядит умно, но под капотом — просто кодировка base64, которая нихуя не шифрование, так что без HTTPS это как на Красной площади голым плясать. Делается так:

    val credentials = "login:password".toByteArray().base64()
    val authHeader = "Basic $credentials"
    request.addHeader("Authorization", authHeader)

    Главное помни: base64 — это не про безопасность, это про то, чтобы спецсимволы не сломали заголовок. Все равно что написать пароль на бумажке и сунуть её в прозрачный конверт.

  2. Отправить в теле запроса (чаще всего в POST).
    Самый нормальный и распространённый способ, особенно для форм логина. Чистая JSON-ка:

    {
      "username": "login",
      "password": "password"
    }

    Работает по HTTPS — и все довольны. Удивление пиздец, но это действительно правильный путь.

  3. Воткнуть прямо в URL как query-параметры (НО ЭТО ПИЗДЕЦ КАК НЕ НАДО!).
    Типа https://api.com/login?user=vasya&pass=secret123.
    Чувак, если ты так делаешь, у меня терпения ноль, ебать. Это же полный распиздяйский подход: пароль светится в логах сервера, в истории браузера, его любой промежуточный сервер увидит. Никогда. Не делай. Так. Даже не думай об этом, выбрось эту идею из головы, как будто её и не было.

Короче, резюме такое: лучше всего — HTTPS POST с данными в теле. Basic Auth в заголовках тоже сойдёт, если ты понимаешь, что это просто кодировка, а не шифр. А всё остальное — это мартышлюшка какая-то, даже не рассматривай. И запомни раз и навсегда: открытым текстом в URL — это прям залупа конская, так не делают.