2017-12-14 22 views
0

Windows 인증을 사용하여 새로운 ASP.NET Web Application -> Web API 2 프로젝트를 만들었습니다. 이 잘 IIS Express에서 작동하지만 내 리팩션 프런트 엔드에 대한 재로드를 얻으려면 webpack-dev-server을 사용하려고 시도하고 IIS Express를 프록시로 지정해야합니다. 쿠키 인증과 토큰 (무기명) 인증을 모두 사용하기 전에 문제없이 사용했지만 Windows 인증 (NTLM 인증)에서는 작동하지 않습니다.Windows 인증 (NTLM 인증)이 적용된 webpack-dev-server 핫 리로드 프록시 IIS Express (Windows 인증 (NTLM 인증))

서버에서 응답을 보면 예상대로 www-authenticate: Negotiate, NTLM 헤더가있는 예상 401 Unauthorized (401.2) 응답을 얻었지만 클라이언트가 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://github.com/chimurai/http-proxy-middleware/issues/39#issuecomment-330911943

최종 솔루션 :

실행 :

npm install agentkeepalive --save 

근무 코드 :

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

이 스레드와 대답에 나를 주도
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, 
    }, 
}