Skip to content

Commit 8b8bfa7

Browse files
authored
fix: copy cookies when cloning haders (#1936)
1 parent eae6807 commit 8b8bfa7

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

lib/fetch/headers.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ class HeadersList {
7575
if (init instanceof HeadersList) {
7676
this[kHeadersMap] = new Map(init[kHeadersMap])
7777
this[kHeadersSortedMap] = init[kHeadersSortedMap]
78+
this.cookies = init.cookies
7879
} else {
7980
this[kHeadersMap] = new Map(init)
8081
this[kHeadersSortedMap] = null

test/fetch/headers.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
const tap = require('tap')
44
const { Headers, fill } = require('../../lib/fetch/headers')
55
const { kGuard } = require('../../lib/fetch/symbols')
6+
const { once } = require('events')
7+
const { fetch } = require('../..')
8+
const { createServer } = require('http')
69

710
tap.test('Headers initialization', t => {
811
t.plan(8)
@@ -692,5 +695,22 @@ tap.test('Headers.prototype.getSetCookie', (t) => {
692695
t.end()
693696
})
694697

698+
// https://github.com/nodejs/undici/issues/1935
699+
t.test('When Headers are cloned, so are the cookies', async (t) => {
700+
const server = createServer((req, res) => {
701+
res.setHeader('Set-Cookie', 'test=onetwo')
702+
res.end('Hello World!')
703+
}).listen(0)
704+
705+
await once(server, 'listening')
706+
t.teardown(server.close.bind(server))
707+
708+
const res = await fetch(`http://localhost:${server.address().port}`)
709+
const entries = Object.fromEntries(res.headers.entries())
710+
711+
t.same(res.headers.getSetCookie(), ['test=onetwo'])
712+
t.ok('set-cookie' in entries)
713+
})
714+
695715
t.end()
696716
})

0 commit comments

Comments
 (0)