#node.js #angular #express
#node.js #angular #экспресс
Вопрос:
Я ломал голову, пытаясь понять, почему этот запрос get не отправляет вместе с ним файл cookie аутентификации, и не могу понять это.
Рассматриваемый запрос выглядит следующим образом:
this.http.get(`${this.url}/api/public/schedules`, {observe: 'body', responseType: 'json', withCredentials: true});
С заранее установленным файлом cookie (который я дважды проверил, он уже установлен, когда этот запрос отправляется) с:
this.CookieService.set("token", token, undefined, undefined, undefined, false);
Инструменты Chrome dev показывают, что файл cookie существует, и для параметра secure установлено значение false, но файл cookie никогда не отправляется ни с какими запросами. Я проверил это как на стороне клиента (chrome сообщает, что файлы cookie не отправляются с запросом), так и на стороне сервера (регистрация файлов cookie, связанных с запросом, всегда остается пустой.)
Вот мой соответствующий код на стороне сервера:
app.use((req, res, next) => { //log all requests
console.log(`Received ${req.method} request for ${req.url}`);
console.log("Cookies: " JSON.stringify(req.cookies));
res.append('Access-Control-Allow-Origin', ['http://localhost:4200']); //adding headers here
res.append('Access-Control-Allow-Credentials', true);
res.append('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
res.append('Access-Control-Allow-Headers', 'Content-Type');
next(); //then continue
});
Когда я отправляю тот же запрос с файлом cookie в insomnia, он правильно регистрируется, поэтому я не уверен, что происходит. Любая помощь будет оценена.
Комментарии:
1. Это: » и для безопасности установлено значение false » является подозрительным в настройке аутентификации. Вы хотите сказать, что протокол
${this.url}
ishttp
и nothttps
?2. ДА. На самом деле нет никаких ценных данных, к которым можно получить доступ, если кто-то обойдет аутентификацию здесь, это школьный проект.
3. Вы уверены, что не происходит перенаправление или прокси-сервер?
4. Может ли это быть связано с этой проблемой?
5. Да, абсолютно уверен. Ни один из них не используется. @MikeOne.