Итак, у меня есть приложение с полным стеком, над которым я работаю, оно состоит из внешнего интерфейса React, внутреннего интерфейса NodeJS и обратного прокси-сервера NGINX. Все они упакованы в контейнеры с использованием docker.
Моя проблема в том, что когда я аутентифицируюсь с использованием локальной стратегии паспорта, это действительно отправляет повара ie обратно в ответе. Тем не менее, похоже, что этот повар ie не задан во внешнем интерфейсе, поскольку в последующие запросы не входит указанный повар ie.
. Вот где я настраиваю повара ie в ответе. object:
res
.status(200)
.cookie("token", token, {
httpOnly: true,
expires: new Date(Date.now() + 12 * 3600000)
})
.send(*jsonObject*);
А вот запрос Fetch, который я использую для входа в систему:
return await fetch(`${baseUrl}/login`, {
method: 'POST',
headers: {
Accept:'application/json',
'Content-Type': 'application/json'
},
credentials: 'include',
body: JSON.stringify({
email: username,
password: password
})
})
.then(async function(response) {
const jsonResponse = await response.json();
return jsonResponse;
})
Пример вызова выборки, требующий включения повара ie
return await fetch(`${baseUrl}/getUserInfo`, {
method: "POST",
headers: {
Accept: "application/json",
"Content-Type": "application/json"
},
credentials: 'include'
})
.then(async function(response) {
const jsonResponse = await response.json();
return jsonResponse;
})
.catch(e => console.log(e));
А вот мой nginx config
server {
listen 80 default_server;
listen [::]:80 default_server;
if ($request_method = 'OPTIONS') {
return 200;
}
root /var/www/html;
index index.html;
# To allow POST on static pages
error_page 405 =200 $uri;
location / {
proxy_pass http://app;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
break;
}
location ~* \.(eot|otf|ttf|woff|woff2)$ {
add_header Access-Control-Allow-Origin *;
}
location ~ /api/(?<url>.*) {
proxy_pass http://api/$url;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
location /health-check {
return 200;
access_log off;
}
}
И показывающий, как реагирует сервер при попадании в конечную точку / login
Изображение результата
Я пытался установить для свойства credentials оба параметра: «include» и «same-origin», но безрезультатно.