Persistiendo una sesión basada en cookies a través de nodo-http-proxy

Tengo un servidor web Node.js basado en Express simple que estoy usando para el desarrollo de una aplicación JavaScript. Configuré el servidor para usar el nodo-http-proxy para las solicitudes de la API del proxy que la aplicación realiza en un servidor Jetty que se ejecuta en un dominio y puerto diferente. Esta configuración ha estado funcionando sin problemas hasta que comencé a tener problemas con la administración de sesiones.

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 API subsiguientes. Cuando ejecuto la aplicación JS en el servidor de nodo y las llamadas a la API se procesan mediante proxy-nodo-nodo (RoutingProxy), los encabezados de solicitud nunca incluyen la cookie.

¿Hay algo que deba manejar manualmente para admitir este tipo de persistencia de sesión a través del proxy? He estado cavando a través del código de nodo-http-proxy pero está un poco por encima de mi cabeza porque soy nuevo en Node.

https://gist.github.com/2475547 o:

<code>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);
</code>

Respuestas a la pregunta(4)

Su respuesta a la pregunta