Skip to content

Commit 8b9b86c

Browse files
committed
fix: fix and optimize fordward header handling
1 parent f45d22c commit 8b9b86c

File tree

1 file changed

+9
-12
lines changed

1 file changed

+9
-12
lines changed

index.js

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -267,11 +267,8 @@ function getRequestHeaders (req) {
267267
headers[HTTP2_HEADER_UPGRADE] = 'websocket'
268268
}
269269

270-
const fwd = {
271-
by: req.headers[HTTP2_HEADER_AUTHORITY] || req.headers[HTTP2_HEADER_HOST],
272-
proto: req.socket.encrypted ? 'https' : 'http',
273-
for: `for=${req.socket.remoteAddress}`
274-
}
270+
headers[HTTP2_HEADER_FORWARDED] = `by=${req.socket.localAddress}`
271+
headers[HTTP2_HEADER_FORWARDED] += `; for=${req.socket.remoteAddress}`
275272

276273
if (req.headers[HTTP2_HEADER_FORWARDED]) {
277274
const expr = /for=\s*([^\s]+)/ig
@@ -280,16 +277,16 @@ function getRequestHeaders (req) {
280277
if (!m) {
281278
break
282279
}
283-
fwd.for += `; ${m[1]}`
280+
headers[HTTP2_HEADER_FORWARDED] += `; ${m[1]}`
284281
}
285282
}
286283

287-
headers[HTTP2_HEADER_FORWARDED] = [
288-
`by=${fwd.by}`,
289-
fwd.for,
290-
fwd.host && `host=${fwd.host}`,
291-
`proto=${fwd.proto}`
292-
].filter(x => x).join('; ')
284+
const host = req.headers[HTTP2_HEADER_AUTHORITY] || req.headers[HTTP2_HEADER_HOST]
285+
if (host) {
286+
headers[HTTP2_HEADER_FORWARDED] += `; host=${host}`
287+
}
288+
289+
headers[HTTP2_HEADER_FORWARDED] += `; proto=${req.socket.encrypted ? 'https' : 'http'}`
293290

294291
return headers
295292
}

0 commit comments

Comments
 (0)