@@ -84,18 +84,13 @@ module.exports = { // <--
84
84
*/
85
85
writeHeaders : function writeHeaders ( req , res , proxyRes , options ) {
86
86
var rewriteCookieDomainConfig = options . cookieDomainRewrite ,
87
- // In proxyRes.rawHeaders Set-Cookie headers are sparse.
88
- // so, we'll collect Set-Cookie headers, and set them in the response as an array.
89
- setCookies = [ ] ,
87
+ rawHeaderKeyMap = { } ,
90
88
setHeader = function ( key , header ) {
91
89
if ( header == undefined ) return ;
92
- if ( key . toLowerCase ( ) !== 'set-cookie' ) {
93
- return res . setHeader ( String ( key ) . trim ( ) , header ) ;
94
- }
95
- if ( rewriteCookieDomainConfig ) {
90
+ if ( rewriteCookieDomainConfig && key . toLowerCase ( ) === 'set-cookie' ) {
96
91
header = common . rewriteCookieDomain ( header , rewriteCookieDomainConfig ) ;
97
92
}
98
- setCookies . push ( header ) ; // defer to the end when we have all of them
93
+ res . setHeader ( String ( key ) . trim ( ) , header ) ;
99
94
} ;
100
95
101
96
if ( typeof rewriteCookieDomainConfig === 'string' ) { //also test for ''
@@ -107,18 +102,17 @@ module.exports = { // <--
107
102
if ( proxyRes . rawHeaders != undefined ) {
108
103
for ( var i = 0 ; i < proxyRes . rawHeaders . length ; i += 2 ) {
109
104
var key = proxyRes . rawHeaders [ i ] ;
110
- var header = proxyRes . rawHeaders [ i + 1 ] ;
111
- setHeader ( key , header ) ;
105
+ rawHeaderKeyMap [ key . toLowerCase ( ) ] = key ;
112
106
}
113
- } else {
114
- Object . keys ( proxyRes . headers ) . forEach ( function ( key ) {
115
- var header = proxyRes . headers [ key ] ;
116
- setHeader ( key , header ) ;
117
- } ) ;
118
- }
119
- if ( setCookies . length ) {
120
- res . setHeader ( 'Set-Cookie' , setCookies . length === 1 ? setCookies [ 0 ] : setCookies ) ;
121
107
}
108
+
109
+ Object . keys ( proxyRes . headers ) . forEach ( function ( key ) {
110
+ var header = proxyRes . headers [ key ] ;
111
+ if ( preserveHeaderKeyCase ) {
112
+ key = rawHeaderKeyMap [ key ] || key ;
113
+ }
114
+ setHeader ( key , header ) ;
115
+ } ) ;
122
116
} ,
123
117
124
118
/**
0 commit comments