#javascript #cookies #browser #fetch #vercel
#javascript #файлы cookie #браузер #принести #vercel
Вопрос:
У меня запущено два сервера VERCEL. Один для сервера, а второй для клиента.
На сервере запущен УЗЕЛ -> экспресс -> экспресс-сеансы.
Клиент работает под управлением Svelte с помощью fetch api.
Мой сервер правильно устанавливает файлы cookie и отправляет их, но мой браузер не сохраняет файлы cookie.
Мой vercel.json:
{
"src": "/api/login",
"dest": "/api/index.js",
"headers": {
"Access-Control-Allow-Origin": "{mydomain}",
"Access-Control-Allow-Methods": "GET,OPTIONS,PATCH,DELETE,POST,PUT",
"Access-Control-Allow-Headers": "X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version",
"Access-Control-Allow-Credentials": "true"
},
"continue": true
},
Экспресс-приложение — это:
app.set('trust proxy', 1);
app.use(cookieParser("secretcode"));
app.use(session({
secret: "secretcode",
resave: true,
saveUninitialized: true,
cookie: {
maxAge: 60000 * 10,
secure: true
},
store: new MongoStore({ mongooseConnection: mongoose.connection })
}))
app.use(passport.initialize());
app.use(passport.session());
Конечной точкой входа в систему является:
const login = async (req, res, next) => {
passport.authenticate("local", (err, user, info) => {
if (err) throw err;
if (!user) {
res.status(200)
res.send("No User Exists")
} else {
req.logIn(user, (err) => {
if (err) throw err;
res.status(200)
req.session.user = user;
res.send({
"message": "Successfully logged in"
});
});
}
})(req, res, next)
}
Клиентский код:
async function login() {
await fetch("{mydomain}/api/login", {
method: "post",
credentials: 'include',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
username: username,
password: password
})
})
}
Что я пробовал:
- Изменение vercel.json Access-Control-Allow-Origin на *
- Добавление / удаление учетных данных: ‘включить’
ничего не работает.
Я запускаю все с https, я даже пробовал только http, но безуспешно. Также в insomnia это работает безупречно.
Комментарии:
1. Привет @Lumca, ты когда-нибудь решал свою проблему? У меня тоже такая же проблема
2. Привет @MatthewFrancis, к сожалению, я этого не сделал.
3. Это очень странно, я думаю, проблема с самим Vercel, вы развернули свой sit в другом приложении, таком как Heroku?
4. @Matthew Francis нет, я этого не делал, я использую только Vercel.
5. Эй, вы решили эту проблему, я вроде как застрял в той же проблеме