Skip to content

Commit d3d7cc2

Browse files
committed
Support node older than v0.11.6
messege.rawHeaders was added in v0.11.6
1 parent ff57a46 commit d3d7cc2

File tree

2 files changed

+27
-11
lines changed

2 files changed

+27
-11
lines changed

Diff for: lib/http-proxy/passes/web-outgoing.js

+23-9
Original file line numberDiff line numberDiff line change
@@ -87,16 +87,30 @@ module.exports = { // <--
8787
if (typeof rewriteCookieDomainConfig === 'string') { //also test for ''
8888
rewriteCookieDomainConfig = { '*': rewriteCookieDomainConfig };
8989
}
90-
for (var i = 0; i < proxyRes.rawHeaders.length; i += 2) {
91-
var key = proxyRes.rawHeaders[i];
92-
var header = proxyRes.rawHeaders[i + 1];
93-
if (header != undefined) {
94-
if (rewriteCookieDomainConfig && key.toLowerCase() === 'set-cookie') {
95-
header = common.rewriteCookieDomain(header, rewriteCookieDomainConfig);
90+
// message.rawHeaders is added in: v0.11.6
91+
// https://nodejs.org/api/http.html#http_message_rawheaders
92+
if (proxyRes.rawHeaders != undefined) {
93+
for (var i = 0; i < proxyRes.rawHeaders.length; i += 2) {
94+
var key = proxyRes.rawHeaders[i];
95+
var header = proxyRes.rawHeaders[i + 1];
96+
if (header != undefined) {
97+
if (rewriteCookieDomainConfig && key.toLowerCase() === 'set-cookie') {
98+
header = common.rewriteCookieDomain(header, rewriteCookieDomainConfig);
99+
}
100+
res.setHeader(String(key).trim(), header);
96101
}
97-
res.setHeader(String(key).trim(), header);
98-
}
99-
};
102+
};
103+
} else {
104+
Object.keys(proxyRes.headers).forEach(function(key) {
105+
var header = proxyRes.headers[key];
106+
if (header != undefined) {
107+
if (rewriteCookieDomainConfig && key.toLowerCase() === 'set-cookie') {
108+
header = common.rewriteCookieDomain(header, rewriteCookieDomainConfig);
109+
}
110+
res.setHeader(String(key).trim(), header);
111+
}
112+
});
113+
}
100114
},
101115

102116
/**

Diff for: test/lib-http-proxy-test.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -149,8 +149,10 @@ describe('lib/http-proxy.js', function() {
149149
}, function(res) {
150150
expect(res.statusCode).to.eql(200);
151151
expect(res.headers['content-type']).to.eql('text/plain');
152-
expect(res.rawHeaders.indexOf('Content-Type')).not.to.eql(-1);
153-
expect(res.rawHeaders.indexOf('text/plain')).not.to.eql(-1);
152+
if (res.rawHeaders != undefined) {
153+
expect(res.rawHeaders.indexOf('Content-Type')).not.to.eql(-1);
154+
expect(res.rawHeaders.indexOf('text/plain')).not.to.eql(-1);
155+
}
154156

155157
res.on('data', function (data) {
156158
expect(data.toString()).to.eql('Hello from ' + ports.source);

0 commit comments

Comments
 (0)