cookie файлы иногда не добавляются

В чем может быть проблема? куки файлы иногда не ставится и не удаляются.

func Login(c *gin.Context) {

var input LoginInput

if err := c.ShouldBindJSON(&input); err != nil {
    c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
    return
}

Username := input.Login
Password := input.Password
Fingerprint := input.Fingerprint

token, text, err := models.LoginCheck(Username, Password, Fingerprint)
if len(token) == 0 {
    c.JSON(http.StatusBadRequest, text)
} else {
    if err != nil {
        c.JSON(http.StatusBadRequest, text)
        return
    }
    at := token["accessToken"]
    rt := token["refreshToken"]

    c.SetCookie("refresh", rt, 10800, "/", "", false, false)
    c.SetCookie("access", at, 900, "/", "", false, false)
    c.JSON(http.StatusOK, text)

}

так ставлю куки

func Exit(c *gin.Context) {
c.SetCookie("refresh", "", -1, "/", "", false, false)
c.SetCookie("access", "", -1, "/", "", false, false)
database.DropSession()}

так их удаляю. Иногда происходит что при авторизации файлы куки не добавляюся или не удается это происходит 1 из 4 случаев данные вводится одни и теже. Использую фреймворк gin


Ответы (1 шт):

Автор решения: hedgehogues

Судя по коду, функция Login устанавливает куки с именами "access" и "refresh" с разным временем жизни. Это может быть причиной того, что иногда куки не устанавливаются. Куки устанавливаются с помощью метода SetCookie в объекте c, который является указателем на объект типа gin.Context. В этом объекте хранится информация о текущем HTTP-запросе и ответе.

Существует несколько вариантов, почему куки могут не устанавливаться:

  1. Браузер может быть настроен таким образом, что он не принимает куки с указанным доменом.
  2. Браузер может быть настроен таким образом, что он не принимает куки с указанной директорией.
  3. Метод SetCookie может возвращать ошибку. В этом случае нужно посмотреть, какая ошибка возвращается
  4. Нужно посмотреть, какая ошибка возвращается, если SetCookie возвращает ошибку. Это может быть связано с тем, что указанный домен не существует, адрес не является абсолютным или путь указан неверно.
  5. Еще одна возможная причина неуспешной установки куки - это ошибка в методе LoginCheck. Этот метод возвращает три значения: токен, текст и ошибку. Если длина токена равна 0, то функция Login возвращает ошибку http.StatusBadRequest и текст, возвращенный методом LoginCheck. В этом случае нужно посмотреть, что возвращается в параметре text и понять, почему метод LoginCheck возвращает такой текст.
  6. Наконец, нужно проверить, что происходит с куки при вызове функции Exit. Проверить, что она успешно удаляет куки с именами "access" и "refresh".
→ Ссылка