Сохранение значения set-cookie в файлах cookie браузера в React

#reactjs #cookies #axios

#reactjs #файлы cookie #axios

Вопрос:

Я получаю это значение cookie с сервера и хочу сохранить его в своем браузере.

 Set-Cookie: succeeedd=noooo!; Path=/
  

Я пробовал с

    const res = yield axios.post(`${config.authURL}/login`, data, {
      headers: {
        'Content-Type': 'application/json',
        Cookie: 'cookie1=value',
      },
    });
  

и

 const res = yield axios.post(
  `${config.authURL}/login`,
  data,
  {
    headers: {
      'Content-Type': 'application/json',
    },
  },
  { withCredentials: true })
  

Оба не сохраняют файлы cookie в файлах cookie браузера. Как я могу сохранить значение Set-Cookie в браузере, чтобы я мог использовать их для аутентификации?

Комментарии:

1. Проверьте это . { withCredentials: true } Должно быть в 3-м аргументе. Не 4-й.

2. есть ли какой-либо способ, которым я могу использовать его с {headers: {}}?

Ответ №1:

Передайте withCredentials: true , как показано ниже

 const res = yield axios.post(
  `${config.authURL}/login`,
  data,
  {
    headers: { 'Content-Type': 'application/json' },
    withCredentials: true
  }
);
  

Для более общей конфигурации,

 // You can add it in a separate config file
const request = axios.create({ withCredentials: true });

// While making API call
request.post(`${config.authURL}/login`, data, { headers: {...} });
  

Проверьте здесь для получения более подробной информации.

Ответ №2:

установить universal-cookie с npm

 import Cookies from 'universal-cookie';

const cookies = new Cookies();

axios.post(URL, data, {
    headers: {
      'Content-Type': 'application/json',
    },
    { withCredentials: true }
  })
  .then((res) => {
    let name = res.data.blobName;
    let value = res.data.blobValue;
    cookies.set(`${name}`, `${value}`);
  })
  .catch(function (error) {
    console.log(error);
  });



  

Комментарии:

1. Но тогда, как я могу получить значение с сервера и использовать его для сохранения в виде cookie?