@keyotor

Почему на сервер не приходят cookie через getServerSideProps next.js?

Подскажите пожалуйста, почему на сервер не приходят cookie через getServerSideProps, вот код который на клиенте:
export async function getServerSideProps() {
  const res = await axios.get("http://localhost:5000/api/auth", {withCredentials: true});
  const data = await res.data;
  return { props: { data } }
}

на сервере у меня есть стратегия которая проверяет access jwt token
export class JwtStrategy extends PassportStrategy(Strategy, "jwt") {
    constructor() {
        super({
            ignoreExpiration: false,
            secretOrKey: "secret",
            jwtFromRequest: ExtractJwt.fromExtractors([
                (request: Request) => {
                    console.log(request.cookies) // [Object: null prototype] {}
                    let data = request.cookies['access'];
                    return data;
                }
            ]),
        });
    }

    async validate(payload: any){
        return payload;
    }
}

То есть когда я отправляю запрос через getServerSideProps, куки на сервер не приходят, хотя если отправить к примеру через useEffect то куки приходят нормально
  • Вопрос задан
  • 852 просмотра
Решения вопроса 1
@Corvuss
Можно попробовать что-то в таком духе. Точно не ручаюсь, т.к. надо тестировать. Суть в том, что getServerSideProps работает на ноде, поэтому поведение отличается от запроса из useEffect, который делается на клиенте. И тут нужно получать куки из объекта http реквеста.

export async function getServerSideProps(ctx) {
  const res = await axios.get("http://localhost:5000/api/auth", {
    withCredentials: true,  
    headers: ctx.req ? { cookie: ctx.req.headers.cookie } : undefined 
  });

  const data = await res.data;

  return { props: { data } }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы