Принимать и отправлять куки с клиентом Go?
Я хочу, чтобы мое приложение Go проходило аутентификацию на веб-сайте, а затем использовало полученный файл cookie для доступа к безопасным местоположениям. Следующие примеры curl иллюстрируют именно то, что я пытаюсь сделать:
Авторизуйтесь на сайте через x-www-form-urlencoded
и сохранить куки. Данные автоматически кодируются:
curl 'https://www.example.com/login' \
--cookie-jar cookies.txt \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data 'user=USER NAME&pass=PASS'
Теперь куки-файл аутентификации сохраняется в cookies.txt
и я просто отправляю это для доступа к странице, требующей входа в систему:
curl 'https://www.example.com/profile' \
--cookie cookies.txt
Я не хочу хранить куки на диске в моем приложении, только в памяти, чтобы я мог использовать их при необходимости.
У кого-нибудь есть пример того, как этого можно достичь в Go?
1 ответ
Для golang вы можете добавить cookie к запросу, вы также можете получить cookie с помощью этой функции после выполнения веб-запроса.
Вы обнаружите, что подход Golang очень похож на подход Java. убедитесь, что вы находитесь внутри своего обработчика входа в систему. вы устанавливаете cookie только с помощью
SetCoookie
функция
myCookie := http.Cookie{
Name: "cookie Name",
Value: "cookieValue",
}
http.SetCookie(w, &myCookie)
по соображениям безопасности рекомендуется добавить в файл cookie флаг httpOnly.
httpOnly: true
этот флаг не имеет ничего общего с HTTPS/HTTP. это означает только запрещение скриптов, только HTTP-запросы для предотвращения атак межсайтового скриптинга (XSS). вы сохраняете файл cookie на стороне клиента, затем при необходимости вызываете файл cookie и проверяете, является ли он правильным файлом cookie и правильным ли клиентом вы его отправляете. этот подход можно реализовать, используя:
cookie, err := r.Cookie("appointment")
checkErr(err)
Теперь расшифруйте куки. проверить это. Делай с ним все, что хочешь. затем верните свой ответ клиенту, если это правильный клиент или нет. надеюсь, что это поможет