Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 我可以将cookies添加到Web包开发服务器代理吗?_Node.js_Cookies_Proxy_Webpack_Webpack Dev Server - Fatal编程技术网

Node.js 我可以将cookies添加到Web包开发服务器代理吗?

Node.js 我可以将cookies添加到Web包开发服务器代理吗?,node.js,cookies,proxy,webpack,webpack-dev-server,Node.js,Cookies,Proxy,Webpack,Webpack Dev Server,我正在尝试在我的网页开发服务器中设置代理。问题是我无法控制连接到的服务器,需要对请求进行身份验证 有没有办法将cookies添加到发送到代理服务器的请求中?我已经浏览了,以及它链接到的页面,我没有看到任何关于cookies的内容。我也不确定是否有办法查看这些转发的请求,因此我无法判断我正在尝试的任何事情是否有任何作用 有什么想法吗?进一步研究后,开发服务器似乎会转发您发送的任何cookie。我尝试进行的身份验证不起作用,我想亚马逊提供了一些我无法解释的安全性,但这就是答案 将cookie添加到发

我正在尝试在我的网页开发服务器中设置代理。问题是我无法控制连接到的服务器,需要对请求进行身份验证

有没有办法将cookies添加到发送到代理服务器的请求中?我已经浏览了,以及它链接到的页面,我没有看到任何关于cookies的内容。我也不确定是否有办法查看这些转发的请求,因此我无法判断我正在尝试的任何事情是否有任何作用


有什么想法吗?

进一步研究后,开发服务器似乎会转发您发送的任何cookie。我尝试进行的身份验证不起作用,我想亚马逊提供了一些我无法解释的安全性,但这就是答案


将cookie添加到发送到dev服务器的请求中,并正确设置代理。

如果只需要为代理重写cookie域,请查看节点http proxy中的cookieDomainRewrite选项

此外,如果您想找到一种方法,在请求/响应的cookie周围注入自定义行为,那么请查看您可以连接到的事件:

proxy.on('proxyRes', function (proxyRes, req, res) {
    console.log('RAW Response from the target',JSON.stringify(proxyRes.headers, true, 2));
});


proxy.on('proxyReq', function (proxyRes, req, res) {
    console.log('RAW Request from the target',JSON.stringify(proxyReq.headers, true, 2));
});

这些选项可以添加到devServer代理的webpack.config.js中,如下所示:

{
    devServer: {
        proxy: {
            onProxyReq: function(proxyReq, req, res){
                proxyReq.setHeader('x-added', 'foobar');
            },
            cookieDomainRewrite: ""
        }
    }
}

我编写了一个小插件,可以轻松地将cookies添加到webpack dev服务器:


它会在需要时自动提示您输入auth Cookie,并在可能的情况下将您的输入存储在系统密钥链中。

对于我的情况,这就是解决方案:

  • 添加
    cookie解析器
    (来自npm或Thread),例如:
    Thread添加“cookie解析器”-dev
  • 然后在
    devServer
const cookieParser = require('cookie-parser') // put at the top

...
devServer: {
    before(app) {
      app.use(cookieParser())

      app.all('/my/route1/', (req, res) => {
        const result = {msg: 'setting cookie'}
        res.cookie('foo', 'bar') // set cookie
        res.writeHead(200, { 'Content-Type': 'application/json' });
        res.end(JSON.stringify(result));
      });

      app.all('/my/route2', (req, res) => {
        const result = {
          my_cookie: req.cookies['foo'], // get cookie
        }
        res.writeHead(200, { 'Content-Type': 'application/json' });
        res.end(JSON.stringify(result));
      });
    },
  }