Я внедрил в производство приложение стека MERN, которое имеет базовую функцию входа в систему, которая просит серверную часть выполнить поиск заданного имени пользователя и пароля в базе данных и, если они были найдены, вернуть данные пользователя, а также файл cookie:
Код: Выделить всё
async function handleLogin(req, res) {
const loginData = req.body;
const username = loginData.username;
const password = loginData.password;
const userData = await getUserData(username, password);
const cookies = getCookies(userData);
res.cookie("cookies", cookies, cookieOptions).status(200).send(userData);
}
function getCookies(userData) {
let cookies = null;
if (userData.length > 0) {
cookies = Jwt.sign({userData: userData}, jwtSecret, {expiresIn: "12h"});
}
return cookies;
}
Я уже долгое время без проблем использую часть входа в систему и недавно добавил часть файлов cookie, теперь, когда мы получили сертификат https. Однако поначалу файлы cookie вообще не работали в рабочей среде, всегда возвращая ошибку ERR_CONNECTION_RESET или ERR_CONNECTION_REFUSED. После долгой отладки я установил для свойства client_max_body_size в nginx.config значение от 1 до 100 м, и, похоже, это по большей части решило проблему. Однако по-прежнему существует редкая вероятность того, что при попытке войти в систему со случайным пользователем будет выдана ошибка ERR_CONNECTION_REFUSED, примерно менее 1 раза из 100 попыток.
Один из моих коллег сказал, что это может быть ошибка в сети компании, но также возможно, что где-то в коде есть асинхронный поток JavaScript, который очень редко не завершается вовремя. Так что ты думаешь? Есть ли ошибка где-то в коде, или мне следует обратиться в ИТ-отдел и сообщить им о проблеме с сетью?
Подробнее здесь:
https://stackoverflow.com/questions/797 ... ce-in-node