Tengo un servidor web basado en Express simple Node.js que estoy usando para el desarrollo de una aplicación de JavaScript. Configuré el servidor para utilizar node-http-proxy para las solicitudes de API proxy que realiza la aplicación a un servidor Jetty que se ejecuta en un dominio y puerto diferentes. Esta configuración ha funcionado perfectamente hasta que comencé a tener problemas con la administración de la sesión.Persistencia de una sesión basada en cookies sobre node-http-proxy
Tras la autenticación, el servidor de aplicaciones devuelve una cookie con un token de autenticación que representa la sesión del servidor. Cuando ejecuto la aplicación JS fuera de mi sistema de archivos (archivo: //), puedo ver que una vez que el cliente recibe la cookie, se envía en todas las solicitudes posteriores de la API. Cuando ejecuto la aplicación JS en el servidor de nodo y las llamadas a la API se procesan a través del nodo-http-proxy (RoutingProxy), los encabezados de solicitud nunca incluyen la cookie.
¿Hay algo que necesite manejar manualmente para admitir este tipo de persistencia de sesión a través del proxy? He estado investigando el código de nodo-http-proxy pero está un poco sobre mi cabeza porque soy nuevo en Node.
https://gist.github.com/2475547 o:
var express = require('express'),
routingProxy = require('http-proxy').RoutingProxy(),
app = express.createServer();
var apiVersion = 1.0,
apiHost = my.host.com,
apiPort = 8080;
function apiProxy(pattern, host, port) {
return function(req, res, next) {
if (req.url.match(pattern)) {
routingProxy.proxyRequest(req, res, {host: host, port: port});
} else {
next();
}
}
}
app.configure(function() {
// API proxy middleware
app.use(apiProxy(new RegExp('\/' + apiVersion + '\/.*'), apiHost, apiPort));
// Static content middleware
app.use(express.methodOverride());
app.use(express.bodyParser());
app.use(express.static(__dirname));
app.use(express.errorHandler({
dumpExceptions: true,
showStack: true
}));
app.use(app.router);
});
app.listen(3000);
He confirmado en Web Inspector que el cliente recibe el encabezado 'set-cookie'. Puede ver la transacción [aquí] (http://i.imgur.com/VQV0a.png).La cookie de solicitud en este caso está siendo generada por el cookieParser de Express que estaba tratando de usar para apoyar la sesión, pero parece que siempre hace lo suyo. – tomswift
Se ha abierto un problema en GitHub porque me cuesta tratar de obtener la cookie de la respuesta del servidor proxy y apoyar manualmente la sesión: https://github.com/nodejitsu/node-http-proxy/issues/236 – tomswift