Причин, по которым сайт может не сохранять cookies, может быть несколько:
1. Отсутствие указания атрибута `Domain` при создании cookie. Если не указать это значение, cookie будет привязана к текущему домену, и при переходе на другой поддомен, она будет потеряна.
2. Отсутствие указания атрибута `Path` при создании cookie. Если не указать это значение, cookie будет доступна только на текущем пути URL.
3. Отсутствие атрибута `Expires` или `Max-Age` при создании cookie. Если не указывать эти атрибуты, cookie будет локальной (session) и будет удалена при закрытии браузера.
4. Включенные в браузере настройки конфиденциальности, которые запрещают сохранение cookies.
Для использования функции `SetCookie` в gin framework и соответствующего получения значений с помощью функции `Cookie`, можно следовать следующим шагам:
1. Создайте экземпляр `http.Cookie` с нужными значениями. Важно правильно заполнить обязательные поля `Name` и `Value`.
```go
cookie := &http.Cookie{
Name: "my_cookie",
Value: "cookie_value",
Path: "/",
}
```
2. Используйте метод `SetCookie` контекста gin для добавления cookie в заголовки ответа.
```go
c.SetCookie(cookie)
```
3. Для получения значения cookie из запроса, используйте метод `Cookie` контекста gin, передав имя cookie в качестве аргумента.
```go
cookieValue, err := c.Cookie("my_cookie")
if err != nil {
// Обработка ошибки
}
```
Если вы продолжаете получать ошибку "http: named cookie not present", убедитесь, что значение `Name` cookie совпадает с тем, который вы хотите получить при вызове `Cookie`. Также проверьте, что `Path` установлен корректно для доступа к cookie из текущего пути URL.