Для реализации передачи кук сессии между Express.js, который работает на одном порту, и Vue.js, который работает на другом порту, мы можем использовать проксирование запросов. В этом случае Express.js будет работать на порту, который будет выставлен в качестве порта прокси, и все запросы с Vue.js будут перенаправляться на этот порт.
Вот как можно настроить передачу кук сессии между Express.js и Vue.js на разных портах:
1. В настройках Express.js (файл, обычно называемый app.js
или index.js
), установите trust proxy
на true
и укажите опцию secure
для кук в соответствии с используемым протоколом (HTTP или HTTPS).
const express = require('express'); const app = express(); app.set('trust proxy', true); // указываем доверять прокси app.use(express.cookieParser()); app.use(express.session({ secret: 'your-secret', resave: true, saveUninitialized: true, cookie: { secure: false // установите true, если используете HTTPS } })); // Настройте маршруты Express.js app.get('/', (req, res) => { // Возвращаем HTML-шаблон, в котором будет использоваться Vue.js res.send('<html><body><div id="app"></div><script src="http://localhost:8080/app.js"></script></body></html>'); }); // Запустите сервер Express.js на нужном порту app.listen(3000, () => { console.log('Express.js server is running on port 3000'); });
2. В конфигурации Vue.js, мы можем использовать proxyTable
для перенаправления всех запросов с порта Vue.js на порт Express.js.
В файле config/index.js
в разделе dev
, мы можем добавить следующую конфигурацию:
module.exports = { // ... dev: { // ... proxyTable: { '/': { target: 'http://localhost:3000', // установите адрес и порт вашего сервера Express.js changeOrigin: true } } } // ... };
В результате, все запросы к порту Vue.js будут перенаправлены на порт Express.js, сохраняя при этом куки сессии.
Вот как можно реализовать передачу кук сессии между Express.js и Vue.js на разных портах. Это позволит использовать Express.js для управления сессиями и сохранения состояния на сервере, а Vue.js для отображения контента пользователю на клиентской стороне.