使用NTLM身份验证的ng serve --proxy-config无效

时间:2016-11-24 03:51:10

标签: angular webpack webpack-dev-server angular-cli node-http-proxy

我试图获得有针对性的内部网络服务器(webpack使用node-http-proxy我认为)来使用NTLM身份验证并缩短时间。

我设置了这样的webpack代理: // in packages.json ... "scripts": { "start": "ng serve --proxy-config proxy.conf.json", ...

proxy.config.json的内容是: { "/srv": { "target": "http://localhost/access_form", "logLevel": "debug", "auth": "LOGIN:PASS" } }

我试图将onProxyRes函数添加到JSON选项对象,但是无法启动Web服务器。

有没有人对这个设置有任何好运?有什么指针吗?

2 个答案:

答案 0 :(得分:2)

我能够通过使用以下作为我的proxy.config.js文件来完成此工作,该文件可以像ng serve --watch --proxy-config proxy.config.js一样传递给angular-cli工具:

var Agent = require("agentkeepalive");

var keepaliveAgent = new Agent({
    maxSockets: 100,
    keepAlive: true,
    maxFreeSockets: 10,
    keepAliveMsecs: 1000,
    timeout: 60000,
    keepAliveTimeout: 30000 // free socket keepalive for 30 seconds
});

var onProxyRes = function (proxyRes, req, res) {
    var key = 'www-authenticate';
    proxyRes.headers[key] = proxyRes.headers[key] && proxyRes.headers[key].split(',');
};

const PROXY_CONFIG = [
    {
        target: "http://localhost:12345",
        context: "/api",
        secure: false,
        changeOrigin: true,
        auth: "LOGIN:PASS",
        loglevel: "debug",
        onProxyRes: onProxyRes,
        agent: keepaliveAgent
    }
];
module.exports = PROXY_CONFIG;

确保安装agentkeepalive软件包:

npm install --save-dev agentkeepalive

更多信息可在以下网址找到:

答案 1 :(得分:1)

http-proxy-middleware issue 39中有一个部分解决方案,但它有一个问题:

var Agent = require('agentkeepalive');

{
  devServer: {
    '/api/*': {
      target: 'http://localhost:12121',
      logLevel: 'debug',
      agent: new Agent({
        maxSockets: 100,
        keepAlive: true,
        maxFreeSockets: 10,
        keepAliveMsecs:1000,
        timeout: 60000,
        keepAliveTimeout: 30000 // free socket keepalive for 30 seconds
     }),
     onProxyRes: proxyRes => {
        var key = 'www-authenticate';
        proxyRes.headers[key] = proxyRes.headers[key] && proxyRes.headers[key].split(',');
      }
    }
  }
}

以下是讨论:https://github.com/chimurai/http-proxy-middleware/issues/39

包括我在内的一些用户正在获得异常" TypeError:cb不是函数"。讨论引用了nodejs / node问题:"在保持活动模式下使用http.Agent的未捕获TypeError#8650"这个时候似乎没有得到解决。

以下是讨论:https://github.com/nodejs/node/issues/8650