У меня есть простой веб-сервер Node.js на основе Express, который я использую для разработки приложения JavaScript. Я настроил сервер для использования node-http-proxy для прокси-запросов API, которые приложение делает на сервере Jetty, который работает в другом домене и порту. Эта настройка работает безупречно, пока я не столкнулся с проблемами управления сеансом.Сохранение сеанса на основе файлов cookie над узлом-http-proxy
После аутентификации сервер приложений возвращает куки-файл с токеном аутентификации, представляющим сеанс сервера. Когда я запускаю приложение JS из своей файловой системы (файл: //), я вижу, что как только клиент получает файл cookie, он отправляется во все последующие запросы API. Когда я запускаю приложение JS на сервере узлов, а вызовы API проксируются через node-http-proxy (RoutingProxy), заголовки запросов никогда не включают cookie.
Есть ли что-то, что мне нужно для ручного управления этим типом сохранения сеанса через прокси? Я копал код node-http-proxy, но это немного над моей головой, потому что я новичок в Node.
https://gist.github.com/2475547 или:
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);
Я подтвердил в веб-инспекторе, что клиент получает заголовок «set-cookie». Вы можете увидеть транзакцию [здесь] (http://i.imgur.com/VQV0a.png).Файл cookie запроса в этом случае генерируется cookieParser Express, который я пытался использовать для поддержки сеанса, но он, кажется, всегда делает свое дело. – tomswift
Открыл проблему в GitHub, пытаясь попытаться получить cookie с ответа прокси-сервера и вручную поддерживать сеанс: https://github.com/nodejitsu/node-http-proxy/issues/236 – tomswift