Skip to content

Commit 0c43610

Browse files
committed
Merge pull request #67 from joeferner/filter-hpkp-headers
Filter HPKP Headers
2 parents 3946101 + d75b24f commit 0c43610

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
lines changed

lib/proxy.js

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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-
714705
var 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

Comments
 (0)