簡體   English   中英

使用Windows身份驗證(NTLM身份驗證)的webpack-dev-server熱重裝代理IIS Express

[英]webpack-dev-server hot reloading proxy IIS Express with Windows authentication (NTLM Authentication)

我已經使用Windows身份驗證創建了一個新的ASP.NET Web Application -> Web API 2項目。 這在IIS Express中可以正常工作,但是要為我的React前端進行熱重裝,我嘗試使用webpack-dev-server並使其代理我的IIS Express。 我之前在Cookie身份驗證和令牌(Bearer)身份驗證中都使用了此功能,但沒有問題,但在Windows身份驗證(NTLM身份驗證)中卻無法使用。

查看來自服務器的響應,我得到了預期的401 Unauthorized (401.2)響應,其標題為www-authenticate: Negotiate, NTLM如預期的那樣,但是我不認為客戶端使用Authorization: NTLM重新發送請求。

我嘗試過的瀏覽器(Chrome,Firefox和IE)也無法正常提示我輸入正確的憑據。

https://blogs.msdn.microsoft.com/chiranth/2013/09/20/ntlm-want-to-know-how-it-works/

我在webpack.config.js中的設置如下所示:

var proxy = 'localhost:57263';

devServer: {
    proxy: {
        '*': {
            target: 'http://' + proxy,
            changeOrigin: true,
        },
        port: 8080,
        host: '0.0.0.0',
        hot: true,
    },
}

在查看了webpack-dev-server Proxy的文檔后,我看到它們使用了http-proxy-middleware

https://webpack.github.io/docs/webpack-dev-server.html#proxy

這導致我進入此線程並回答:

https://github.com/chimurai/http-proxy-middleware/issues/39#issuecomment-330911943

最終解決方案:

跑:

npm install agentkeepalive --save

工作代碼:

var proxy = 'localhost:57263';

devServer: {
    proxy: {
        '*': {
            target: 'http://' + proxy,
            changeOrigin: true,
            agent: new agent({
                maxSockets: 100,
                keepAlive: true,
                maxFreeSockets: 10,
                keepAliveMsecs: 100000,
                timeout: 6000000,
                keepAliveTimeout: 90000 // free socket keepalive for 90 seconds
            }),
            onProxyRes: (proxyRes) => {
                var key = 'www-authenticate';
                proxyRes.headers[key] = proxyRes.headers[key] && proxyRes.headers[key].split(',');
            },
        },
        port: 8080,
        host: '0.0.0.0',
        hot: true,
    },
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM