@@ -255,16 +255,23 @@ function appendFetchMetadata (httpRequest) {
255255
256256// https://fetch.spec.whatwg.org/#append-a-request-origin-header
257257function appendRequestOriginHeader ( request ) {
258- // 1. Let serializedOrigin be the result of byte-serializing a request origin with request.
258+ // 1. Let serializedOrigin be the result of byte-serializing a request origin
259+ // with request.
260+ // TODO: implement "byte-serializing a request origin"
259261 let serializedOrigin = request . origin
260262
261- // 2. If request’s response tainting is "cors" or request’s mode is "websocket", then append (`Origin`, serializedOrigin) to request’s header list.
262- if ( request . responseTainting === 'cors' || request . mode === 'websocket' ) {
263- if ( serializedOrigin ) {
264- request . headersList . append ( 'origin' , serializedOrigin , true )
265- }
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' ) {
267+ return
268+ }
266269
270+ // 2. If request’s response tainting is "cors" or request’s mode is "websocket",
271+ // then append (`Origin`, serializedOrigin) to request’s header list.
267272 // 3. Otherwise, if request’s method is neither `GET` nor `HEAD`, then:
273+ if ( request . responseTainting === 'cors' || request . mode === 'websocket' ) {
274+ request . headersList . append ( 'origin' , serializedOrigin , true )
268275 } else if ( request . method !== 'GET' && request . method !== 'HEAD' ) {
269276 // 1. Switch on request’s referrer policy:
270277 switch ( request . referrerPolicy ) {
@@ -275,13 +282,16 @@ function appendRequestOriginHeader (request) {
275282 case 'no-referrer-when-downgrade' :
276283 case 'strict-origin' :
277284 case 'strict-origin-when-cross-origin' :
278- // If request’s origin is a tuple origin, its scheme is "https", and request’s current URL’s scheme is not "https", then set serializedOrigin to `null`.
285+ // If request’s origin is a tuple origin, its scheme is "https", and
286+ // request’s current URL’s scheme is not "https", then set
287+ // serializedOrigin to `null`.
279288 if ( request . origin && urlHasHttpsScheme ( request . origin ) && ! urlHasHttpsScheme ( requestCurrentURL ( request ) ) ) {
280289 serializedOrigin = null
281290 }
282291 break
283292 case 'same-origin' :
284- // If request’s origin is not same origin with request’s current URL’s origin, then set serializedOrigin to `null`.
293+ // If request’s origin is not same origin with request’s current URL’s
294+ // origin, then set serializedOrigin to `null`.
285295 if ( ! sameOrigin ( request , requestCurrentURL ( request ) ) ) {
286296 serializedOrigin = null
287297 }
@@ -290,10 +300,8 @@ function appendRequestOriginHeader (request) {
290300 // Do nothing.
291301 }
292302
293- if ( serializedOrigin ) {
294- // 2. Append (`Origin`, serializedOrigin) to request’s header list.
295- request . headersList . append ( 'origin' , serializedOrigin , true )
296- }
303+ // 2. Append (`Origin`, serializedOrigin) to request’s header list.
304+ request . headersList . append ( 'origin' , serializedOrigin , true )
297305 }
298306}
299307
0 commit comments