@@ -690,7 +690,7 @@ Proxy.prototype._onHttpServerRequest = function(isSSL, clientToProxyRequest, pro
690690 if ( err ) {
691691 return self . _onError ( 'ON_RESPONSEHEADERS_ERROR' , ctx , err ) ;
692692 }
693- ctx . proxyToClientResponse . writeHead ( ctx . serverToProxyResponse . statusCode , canonizeHeaders ( ctx . serverToProxyResponse . headers ) ) ;
693+ ctx . proxyToClientResponse . writeHead ( ctx . serverToProxyResponse . statusCode , Proxy . filterAndCanonizeHeaders ( ctx . serverToProxyResponse . headers ) ) ;
694694 ctx . responseFilters . push ( new ProxyFinalResponseFilter ( self , ctx ) ) ;
695695 var prevResponsePipeElem = ctx . serverToProxyResponse ;
696696 ctx . responseFilters . forEach ( function ( filter ) {
@@ -702,15 +702,6 @@ Proxy.prototype._onHttpServerRequest = function(isSSL, clientToProxyRequest, pro
702702 }
703703} ;
704704
705- var canonizeHeaders = function ( originalHeaders ) {
706- var headers = { } ;
707- for ( var key in originalHeaders ) {
708- headers [ key . trim ( ) ] = originalHeaders [ key ] ;
709- }
710-
711- return headers ;
712- }
713-
714705var ProxyFinalRequestFilter = function ( proxy , ctx ) {
715706 events . EventEmitter . call ( this ) ;
716707 this . writable = true ;
@@ -995,3 +986,16 @@ Proxy.parseHost = function(hostString, defaultPort) {
995986 port : port
996987 } ;
997988} ;
989+
990+ Proxy . filterAndCanonizeHeaders = function ( originalHeaders ) {
991+ var headers = { } ;
992+ for ( var key in originalHeaders ) {
993+ var canonizedKey = key . trim ( ) ;
994+ if ( '/^public\-key\-pins/i' . test ( canonizedKey ) ) {
995+ // KPKP header => filter
996+ continue ;
997+ }
998+ headers [ canonizedKey ] = originalHeaders [ key ] ;
999+ }
1000+ return headers ;
1001+ } ;
0 commit comments