Skip to content

Commit 1573f69

Browse files
authored
don't append empty origin (#3335)
1 parent 981fb3d commit 1573f69

File tree

2 files changed

+34
-4
lines changed

2 files changed

+34
-4
lines changed

lib/web/fetch/util.js

+7-4
Original file line numberDiff line numberDiff line change
@@ -260,10 +260,13 @@ function appendRequestOriginHeader (request) {
260260
// TODO: implement "byte-serializing a request origin"
261261
let serializedOrigin = request.origin
262262

263-
// "'client' is changed to an origin during fetching."
264-
// This doesn't happen in undici (in most cases) because undici, by default,
265-
// has no concept of origin.
266-
if (serializedOrigin === 'client') {
263+
// - "'client' is changed to an origin during fetching."
264+
// This doesn't happen in undici (in most cases) because undici, by default,
265+
// has no concept of origin.
266+
// - request.origin can also be set to request.client.origin (client being
267+
// an environment settings object), which is undefined without using
268+
// setGlobalOrigin.
269+
if (serializedOrigin === 'client' || serializedOrigin === undefined) {
267270
return
268271
}
269272

test/fetch/issue-3334.js

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
'use strict'
2+
3+
const { test } = require('node:test')
4+
const { tspl } = require('@matteo.collina/tspl')
5+
const { once } = require('node:events')
6+
const { createServer } = require('node:http')
7+
const { fetch } = require('../..')
8+
9+
test('a non-empty origin is not appended (issue #3334)', async (t) => {
10+
const { strictEqual } = tspl(t, { plan: 1 })
11+
const origin = 'https://origin.example.com'
12+
13+
const server = createServer((req, res) => {
14+
strictEqual(req.headers.origin, origin)
15+
res.end()
16+
}).listen(0)
17+
18+
t.after(server.close.bind(server))
19+
await once(server, 'listening')
20+
21+
await fetch(`http://localhost:${server.address().port}`, {
22+
headers: { origin },
23+
body: '',
24+
method: 'POST',
25+
redirect: 'error'
26+
})
27+
})

0 commit comments

Comments
 (0)