Как настроить cook ie на следующее приложение js с отдельного сервера? - PullRequest
0 голосов
/ 06 августа 2020

У меня есть X t. js приложение, и я отправляю все запросы на мой ne S t. js сервер, но когда я пытаюсь auth cook ie не сохранять в моем браузере.

Мой запрос к серверу:

export async function login(data) {
  const headers = new Headers();
  headers.set("Content-Type", "application/x-www-form-urlencoded");

  const response = await fetch(`${process.env.API_URL}/auth/sign-in`, {
    method: "POST",
    headers,
    body: new URLSearchParams({ ...data, username: data.email })
  });

  if (response.ok) {
    return {
      access_token: await response.json()
    };
  } else {
    return null;
  }
}

контроллер:

@UseGuards(LocalAuthGuard)
  @Post("sign-in")
  async login(@Req() req: IReq, @Res() res: Response<string>): Promise<void> {
    const tokens = await this.authService.createTokens(req.user);
    
    res.cookie("refresh_token", tokens.refresh_token, {
      httpOnly: true,
      maxAge: 1000 * 60 * 60 * 24 * 30,
      signed: true
    });

    res.json(tokens.access_token).status(201);
  }

Если я сделаю запрос почтальону, я есть повар ie.

Какой еще код мне нужно предоставить? Нужен минимальный рабочий пример?

1 Ответ

0 голосов
/ 06 августа 2020

Fetch по умолчанию не сохраняет файлы cookie. вы должны использовать опцию credentials: 'same-origin' для сохранения файлов cookie.

  const response = await fetch(`${process.env.API_URL}/auth/sign-in`, {
    method: "POST",
    headers,
    credentials: 'same-origin', // <- add this to store cookies
    body: new URLSearchParams({ ...data, username: data.email })
  });
...