2016-08-15 2 views
1

Я использую Lite-сервер от John Papa с промежуточным ПО HTTP proxy от chimurai в качестве сервера-разработчика. проблема с моим cookie сеанса, я не могу сохранить cookie сеанса, который исходит от реального сервера. Я видел это решение: https://github.com/chimurai/http-proxy-middleware/issues/78http-proxy-middleware, как скопировать все заголовки/cookie

, но я не вижу никакого сходства с моим BS-config.js:

var proxy = require('http-proxy-middleware'); 

module.exports = { 
    port: 3003, 
    server: { 
     middleware: { 
      1: proxy('demo/webservice/jaxrs', { 
       target: 'https://localhost:8443', 
       secure: false, // disable SSL verification 
       changeOrigin: true // for vhosted sites, changes host header to match to target's host 
      }), 
      2: require('connect-history-api-fallback')({index: '/index.html', verbose: true}) 
     } 
    } 
}; 

ли кто-то знает, как объединить это два?

UPDATE: это часть заголовков ответа:

set-cookie:JSESSIONID=620083CD7AEB7A6CC5772AC800E673E3; Path=/appServer/webservice/jaxrs; Secure 
strict-transport-security:max-age=31622400; includeSubDomains 
Transfer-Encoding:chunked 

UPDATE2: Я думаю, что моя конфигурация должна выглядеть следующим образом:

var proxy = require('http-proxy-middleware'); 

function relayRequestHeaders(proxyReq, req) { 
    Object.keys(req.headers).forEach(function (key) { 
     proxyReq.setHeader(key, req.headers[key]); 
    }); 
}; 

function relayResponseHeaders(proxyRes, req, res) { 
    Object.keys(proxyRes.headers).forEach(function (key) { 
      res.append(key, proxyRes.headers[key]); 
     }); 
}; 

module.exports = { 
    port: 3003, 
    server: { 
     middleware: { 
      1: proxy('/skybox', { 
       target: 'https://localhost:8443', 
       secure: false, // disable SSL verification 
       changeOrigin: true, // for vhosted sites, changes host header to match to target's host 
       onProxyReq: relayRequestHeaders, 
       onProxyRes: relayResponseHeaders 
      }), 
      2: require('connect-history-api-fallback')({index: '/index.html', verbose: true}) 
     } 
    } 
}; 

но теперь res.append не определено :(

+0

Можете ли вы предоставить RAW ответ от цели? Что такое значение set-cookie в этом ответе на RAW? – chimurai

+0

Я обновил свое оригинальное сообщение. это файл cookie сеанса: set-cookie: JSESSIONID = 620083CD7AEB7A6CC5772AC800E673E3; Path =/Appserver/вебсервис/jaxrs; Secure – Avi

+0

Можете ли вы также предоставить запрос RAW, который загорается на сервере на порту 3003? – chimurai

ответ

1

Не знаете, как настроен ваш локальный хост: 3003 с https: ...

Предположим, вы используете http://localhost:3000 (не https :); Атрибут cookie Secure от вашей цели может быть причиной того, что ваш браузер опустил файл cookie.

4.1.2.5. Защищенный атрибут

Атрибут Secure ограничивает область действия cookie «безопасным»
каналов (где «защищенный» определяется пользовательским агентом). Когда
печенье имеет атрибут Secure, агент пользователя будет включать в себя
печенье в запросе HTTP только если запрос передается по
защищенного канала (обычно HTTP через Transport Layer Security (TLS)

источник: https://tools.ietf.org/html/rfc6265#section-4.1.2.5

Браузеры могут опускаем печенье на основе алгоритма, описанные в: https://tools.ietf.org/html/rfc6265#section-5.4

Попробуйте удалить Secure Attribute и увидеть, если это помогает

+0

при переходе на http без безопасного флага. Я получаю сеанс. Означает ли это, что я не могу использовать https или безопасные файлы cookie с помощью синхронизации браузера? – Avi

+0

Вы все еще можете. Просто включите опцию 'https' в браузере-sync:' browserSync ({ https: true }); 'Таким образом, безопасный файл cookie, вероятно, не будет отклонен. – chimurai

0

попробовать:

var cookie; 
function relayRequestHeaders(proxyReq, req) { 
    if (cookie) { 
    proxyReq.setHeader('cookie', cookie); 
    } 
}; 

function relayResponseHeaders(proxyRes, req, res) { 
    var proxyCookie = proxyRes.headers["set-cookie"]; 
    if (proxyCookie) { 
    cookie = proxyCookie; 
    } 
}; 

Он работает с облегченной-сервером

Смежные вопросы