Я отправляю запрос на сервер node.js от клиента reactjs, используя ax ios, как показано ниже.
import axios from 'axios';
const apiClient = axios.create({
withCredentials: true,
baseURL: 'http://localhost:8080'
});
async function(payload) {
try {
debugger;
let result = await apiClient.post('/auth/signup/', payload);
debugger;
return result;
} catch (error) {
debugger;
throw error;
}
}
Конечная точка node.js устанавливает повара ie в ответе, как показано ниже.
const express = require('express');
const bodyParser = require('body-parser');
const cookieParser = require('cookie-parser')
const cors = require('cors');
const jwt = require('jsonwebtoken');
router.use(bodyParser.json());
router.use(bodyParser.urlencoded({ extended: true }));
router.use(cors({ origin: 'http://localhost:3000', credentials: true, exposedHeaders: ['Set-Cookie', 'Date', 'ETag']} ));
router.use(cookieParser());
router.post('/signup', async (req, res, next) => {
debugger;
let database = req.app.locals.database;
try {
let user = await database.findByUsername(req.body.username);
let token = await jwt.sign({username: user.username}, config.secret, {expiresIn: "15m"});
res.cookie('jwt', token, {
maxAge: 900,
});
} catch (error) {
debugger;
return res.status(503).send({ auth: false, message: 'Database error.' });
}
});
Заголовок ответа Set-Cook ie содержит повара ie как и ожидалось.
Однако Chrome, похоже, не настраивает повара ie, так как я не вижу повара ie в окне приложения консоли разработчика.
Я посмотрел ответы на следующие вопросы, в которых упоминается настройка { withCredentials: true }
в конфигурации топора ios и без использования подстановочного знака для cors в node.js, но я уже делаю и то, и другое.
Set-Cook ie заголовок не настраивает cook ie в Chrome
Установить файлы cookie для запросов перекрестного происхождения
Есть идеи относительно того, почему не установлен параметр cook ie и как это исправить вопрос