0

Ich bin mit webpack-dev-Server auf localhost: 8000 für meine App und express + socket.io auf Port 3000 für meine api. Ich habe Anfragen proxied in webpack.config.js als solche Socket.io:session.id Änderungen und socket.io entsprechen nicht

devServer: { 
    proxy: { 
     '/socket.io': { 
      target: 'http://localhost:3000', 
      ws: true 
     } 
    } 
} 

jedoch nicht nur den Session-IDs in ausdrücklichen tun und socket.io nicht übereinstimmen, die Session-ID in ausdrücken Änderungen jede Anfrage:

Server:

let app = require('express')(); 
let session = require('express-session')({ 
    secret: 'panopticon', 
    resave: true, 
    saveUninitialized: true 
}); 
let server = require('http').createServer(app); 
let io = require('socket.io')(server); 

//session middleware 
app.use(session); 
io.use(require('express-socket.io-session')(session, { 
    autoSave: true 
})); 

let i=0; 

app.get('/socket.io', (req, res) => { 
    console.log(i++, req.session.id); 
    //0 'ShgnU91kCZzC7xHP9B57ZtsCbwi3XjdB' 
    //1 'qLsYYpRZXpyoUrcKzF6K7uoAIKtE9oCh' 

    res.send(); 
}); 

io.on('connection', socket => { 
    console.log(socket.handshake.session.id); 
    //MRUYZMVstMh6ssNrq9LP-Z4vTaT5SZcs 
}); 

Auftraggeber:

Antwort

0

Die einzige Art, wie ich dies zu Arbeit bekam, war eine AJAX-Anforderung zuerst zu localhost:3000 zu tun:

fetch('http://127.0.0.1:3000', { 
    credentials: 'include' 
}); 

Mit dem folgenden Handler auf der Antwort:

app.use('/', (req, res) => { 
    res.header('Access-Control-Allow-Origin', 'http://127.0.0.1:8080'); 
    res.header('Access-Control-Allow-Credentials', 'true'); 
    res.sendStatus(200); 
}); 

GitHub Gist

+0

Hi, ich denke ich habe ein ähnliches Problem. Würdest du deinen Code gerne auf git posten? – Freddie

+0

@Freddie fügte Gist hinzu, um zu antworten – Thiatt