【问题标题】:http-proxy-middleware create new session for per requesthttp-proxy-middleware 为每个请求创建新会话
【发布时间】:2017-04-26 11:54:50
【问题描述】:

我使用 http-proxy-middleware 构建了一个代理,它为每个请求生成新会话,因此我无法使用会话中的令牌存储验证登录状态。anynoe 有解决此问题的想法。

enter image description here

enter image description here

【问题讨论】:

    标签: session webpack http-proxy-middleware


    【解决方案1】:
    // proxy middleware options 
    var options = {
      target: 'http://localhost:8081', // target host 
      changeOrigin: true,               // needed for virtual hosted sites 
      ws: true,                         // proxy websockets 
      logLevel: "debug",
      pathRewrite: {
        '^/src/wxmservice/' : '/wxmservice/'
      },
      onProxyRes: function (proxyRes, req, res) {
        if (proxyRes.headers['set-cookie'] != undefined) {
            req.session['cookie'] = proxyRes.headers['set-cookie'];  // must be or you will get new session for each call
            req.session['proxy-cookie'] = proxyRes.headers['set-cookie'];  // add to other key because cookie will be lost
        }
        console.log("response: " + req.session.id);
        console.log(req.session);
      },
      onProxyReq: function (proxyReq, req, res) {
        // check for whether the session be freshed
        if (req.session.view)
          req.session.view ++;
        else
          req.session.view = 1;
    
        // use ower key to restore cookie
        if (req.session['proxy-cookie'] != undefined)
          proxyReq.setHeader('cookie', req.session['proxy-cookie'][0]);
    
        console.log("request: " + req.session.id);
        console.log(req.session);
      }
    };
    
    var session = require('express-session');
    app.use(session({
        secret: 'sessiontest',
        resave: true,
        saveUninitialized:true
    }));
    

    【讨论】:

      猜你喜欢
      • 2021-06-15
      • 2016-08-07
      • 2011-05-15
      • 1970-01-01
      • 1970-01-01
      • 2022-10-14
      • 2020-07-13
      • 2013-02-23
      • 2016-01-18
      相关资源
      最近更新 更多