Браузер не сохраняет куки

Я использую Go Fiber и его промежуточное программное обеспечение для сеансов для простой системы аутентификации. Все работает, за исключением того, что браузер не сохраняет файлы cookie. мой бэкэнд обслуживается https://127.0.0.1:3033 и мой интерфейс включен https://127.0.0.1:4321

это файл cookie, отправленный сервером:

session_id=7bbb86ac-04e7-43b2-8f0a-345d720efa35; max-age=900; domain=127.0.0.1; path=/; HttpOnly; secure; SameSite=None

Это моя конфигурация сеанса Fiber:

func initSessionStore() *session.Store {
    store := session.New(session.Config{
        CookieHTTPOnly: true,
        Expiration:     time.Minute * 15,
        Storage:        sqlite3.New(),
        CookieSecure:   false,
        CookieSameSite: "None",
        CookieDomain:   "127.0.0.1",
        CookiePath:     "/",
    })
    return store
}

Это моя конфигурация Cors:

cors.New(cors.Config{
            AllowOrigins:     os.Getenv("FRONTEND_URL"), // 127.0.0.1:4321 
            AllowCredentials: true,
        }),

Что я уже пробовал:

  • обслуживание моих приложений на HTTPS
  • использование поддельных доменов (субдомен для серверной части)
  • пробую разные браузеры

Как вы вызываете бэкэнд из внешнего интерфейса?

Evert 25.04.2024 22:32

Какова цель установки CookieDomain на 127.0.0.1 вместо того, чтобы просто оставить его пустым? Кроме того, в вашем коде указано «CookieSecure: false», но файл cookie показывает «безопасно». Итак, код, похоже, противоречит результату, действительно ли он из одного и того же запуска? Кроме того, как вы определили, что браузер не сохраняет файлы cookie?

Steffen Ullrich 25.04.2024 22:33

1. «безопасно»: вы должны использовать https даже на локальном хосте. 2. Файлы cookie доменных имен на IP-адресах вроде бы работают, но это совершенно бессмысленная идея, не делайте этого.

Volker 26.04.2024 07:25

@Evert, вот как я называю API: js fetch("https://127.0.0.1:3033/auth/users/user-info" , {credentials:"include", })

Amirreza 26.04.2024 08:32

Я использую https на своем локальном хосте @volker

Amirreza 26.04.2024 08:34

Когда вы используете домены, файлы cookie будут защищены, я просто возился с опциями, поэтому я использую домен. @SteffenUllrich

Amirreza 26.04.2024 08:36

@Volker https, необходимый для локального хоста, является устаревшей информацией. Раньше это было правдой, но теперь localhosti считаются безопасным контекстом.

Evert 26.04.2024 12:20

Согласен с Амиррезой, удалите домен. После того, как этот файл cookie установлен, где вы ожидаете его появление? Файл cookie, установленный в вашем внутреннем источнике, не будет отображаться в вашем внешнем источнике, но он должен быть отправлен с любыми последующими запросами к серверной части.

Evert 26.04.2024 12:21
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
API ввода вопросов - это полезный инструмент для интеграции моделей машинного обучения, таких как ChatGPT, в приложения, требующие обработки...
3
8
67
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Наконец я понял, почему это не сработало.

Я забыл использовать credentials:"include" там, где OAuth приземлялся во внешнем интерфейсе, не могу поверить, что забыл это...

Другие вопросы по теме