Что я делаю не так, когда пытаюсь установить повара ie с помощью Express - PullRequest
2 голосов
/ 16 февраля 2020

В настоящее время я пытаюсь отправить повара ie обратно в свое приложение реакции после входа в систему. На моем сервере есть тестовый ответ:

res.status(200).cookie('nameOfCookie', 'cookieValue', { maxAge: 1000* 60 * 60 }).end();

и в приложении у меня есть

Axios.post('http://localhost:5000/User/login', userDetails).then(res => {
    console.log(JSON.stringify(res))
    this.props.history.push('/list');
})

Ответ получен по вызову,

{"data": "", "status": 200, "statusText": "OK", "headers": { "Content-Length": "0"}, "конфигурация": { "URL": "http://localhost: 5000 / Пользователь / Логин ", "метод": "пост", "данные": "{\" email \ ": \" a \ ", \" password \ ": \" a \ "}", "headers": {"Accept": "application / json, text / plain, /" "Content-Type": "приложения / JSON; кодировка = UTF-8"}, "transformRequest": [NULL], "transformResponse": [NULL], "тайм-аут": 0," xsrfCookieName ":" XSRF-TOKEN "," xsrfHeaderName ":" X-XSRF-TOKEN "," maxContentLength ": - 1}," request ": {}}

Но без готовки ie в конечном итоге быть установлен, кто-нибудь может сказать мне, в чем проблема здесь? Спасибо -

У меня также есть

app.use(cookieParser());

в качестве первого использования приложения, как это было рекомендовано, но это не помогло

Ответы [ 2 ]

1 голос
/ 16 февраля 2020

Я наконец-то понял:

Оказывается, по умолчанию Ax ios имеет 'withCredentials', установленный в false, поэтому я создал новый экземпляр с переопределением и использовал его вместо

var myAxios = Axios.create ({
    withCredentials: true
})

Это также потребовало от меня обновления cors для принятия этих учетных данных

app.use(cors({credentials: true, origin: 'http://localhost:3000'}));
0 голосов
/ 16 февраля 2020

Реагирующее приложение не может установить cook ie, потому что внутреннее приложение работает на другом порту, поэтому это междоменная проблема cook ie.

Вы должны установить нижний заголовок в backend и в запросе Axios установите withCredentials: true.

учетные данные: учетные данные, которые вы хотите использовать для запроса: omit, same-origin или include. Для автоматической отправки файлов cookie для текущего домена эта опция должна быть предоставлена. Начиная с Chrome 50.

В Ax ios

withCredentials указывает, есть ли межсайтовые запросы контроля доступа или нет должно быть сделано с использованием учетных данных. По умолчанию: withCredentials: false.

1. "Access-Control-Allow-Origin: http://localhost:3000";
2. "Access-Control-Allow-Credentials: true";
3. "Access-Control-Allow-Methods: GET, POST";
4. "Access-Control-Allow-Headers: Content-Type, *";

Пример:

res
  .set("Access-Control-Allow-Origin", "http://localhost:3000")
  .set("Access-Control-Allow-Credentials", "true")
  .set("Access-Control-Allow-Methods", "GET, POST")
  .set("Access-Control-Allow-Headers", "Content-Type, *")
  .status(200).cookie('nameOfCookie', 'cookieValue', { maxAge: 1000 * 60 * 60 }).end();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...