2017-12-14 17 views
0

Windows認証を使用して新しいASP.NET Web Application - > Web API 2プロジェクトを作成しました。これはIIS Expressでうまく動作しますが、私のリアクションフロントエンドのホットリロードを取得するにはwebpack-dev-serverを使用しようとしていて、IIS Expressをプロキシにしました。私はクッキー認証とトークン(ベアラ)認証の両方で問題なくこれを使用しましたが、Windows認証(NTLM認証)では動作しません。webpack-dev-serverホットリロードプロキシWindows認証(NTLM認証)を使用するIIS Express

サーバーからの応答を見ると、期待通りにという応答が得られますが、クライアントは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, 
    }, 
} 

答えて

0

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, 
    }, 
}