Я пытаюсь установить cookie для всех запросов get или post после успешной аутентификации. Запрос аутентификации возвращает ответ со значением заголовка Set-cookie
в формате
[accesstoken=sample_token; Version=1; Comment=secured; Domain=test.com; Max-Age=172800000; Expires=Mon, 07-Apr-2025 10:55:18 GMT; Path=]
. Для веб-приложения мне не нужно ничего устанавливать, запрос xhr автоматически обрабатывает добавление cookie. Этот cookie-файл также отвечает за идентификацию пользователя на сервере. Я где-то читал, что cookie - это просто заголовок с Cookie
в качестве значения ключа. Так что после успешной аутентификации заголовок Set-Cookie
читается из заголовка ответа в формате, заданном с помощью
var cookeis = response.headers.get("Set-Cookie").toString()
Далеезначение добавляется в качестве заголовка в каждом последующем запросе.
fun _POST(ctx: Context, path: String, query: List<Pair<String, String?>>): Request {
var fuel = Fuel.post(ctx.getString(baseID)+path, query)
val accesstoken = getCookie(ctx)
when(accesstoken!=null){
true -> fuel = fuel.set(com.github.kittinunf.fuel.core.Headers.COOKIE,accesstoken)
false -> {}
}
return fuel
}
Я вижу отправляемый заголовок, если я печатаю заголовки в любом запросе на публикацию, как указано ниже
val (request, response, result) = _POST(this@MainActivity, getString(R.string.API_MY_DATA), listOf("date" to currentDate))
.also { println(it.headers.toString()) }
.response()
это напечатаеттот же cookie, ранее установленный -
[accesstoken=sample_token; Version=1; Comment=secured; Domain=test.com; Max-Age=172800000; Expires=Mon, 07-Apr-2025 10:55:18 GMT; Path=]
, но сервер возвращает 400 статус ответа. Этот же API был использован для разработки приложения с использованием библиотеки react-native
. Там xhr-запросы автоматически обрабатывают управление файлами cookie.
Примечание: у меня нет доступа к серверной части.