(fetchParams, isAuthenticationFetch = false, isNewConnectionFetch = false)
| 14438 | return Promise.resolve(makeNetworkError(err)); |
| 14439 | } |
| 14440 | if (!urlIsHttpHttpsScheme(locationURL)) { |
| 14441 | return Promise.resolve(makeNetworkError("URL scheme must be a HTTP(S) scheme")); |
| 14442 | } |
| 14443 | if (request.redirectCount === 20) { |
| 14444 | return Promise.resolve(makeNetworkError("redirect count exceeded")); |
| 14445 | } |
| 14446 | request.redirectCount += 1; |
| 14447 | if (request.mode === "cors" && (locationURL.username || locationURL.password) && !sameOrigin(request, locationURL)) { |
| 14448 | return Promise.resolve(makeNetworkError('cross origin not allowed for request mode "cors"')); |
| 14449 | } |
| 14450 | if (request.responseTainting === "cors" && (locationURL.username || locationURL.password)) { |
| 14451 | return Promise.resolve(makeNetworkError( |
| 14452 | 'URL cannot contain credentials for request mode "cors"' |
| 14453 | )); |
| 14454 | } |
| 14455 | if (actualResponse.status !== 303 && request.body != null && request.body.source == null) { |
| 14456 | return Promise.resolve(makeNetworkError()); |
| 14457 | } |
| 14458 | if ([301, 302].includes(actualResponse.status) && request.method === "POST" || actualResponse.status === 303 && !GET_OR_HEAD.includes(request.method)) { |
| 14459 | request.method = "GET"; |
| 14460 | request.body = null; |
| 14461 | for (const headerName of requestBodyHeader) { |
| 14462 | request.headersList.delete(headerName); |
| 14463 | } |
| 14464 | } |
| 14465 | if (!sameOrigin(requestCurrentURL(request), locationURL)) { |
| 14466 | request.headersList.delete("authorization", true); |
| 14467 | request.headersList.delete("proxy-authorization", true); |
| 14468 | request.headersList.delete("cookie", true); |
| 14469 | request.headersList.delete("host", true); |
| 14470 | } |
| 14471 | if (request.body != null) { |
| 14472 | assert(request.body.source != null); |
| 14473 | request.body = safelyExtractBody(request.body.source)[0]; |
| 14474 | } |
| 14475 | const timingInfo = fetchParams.timingInfo; |
| 14476 | timingInfo.redirectEndTime = timingInfo.postRedirectStartTime = coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability); |
| 14477 | if (timingInfo.redirectStartTime === 0) { |
| 14478 | timingInfo.redirectStartTime = timingInfo.startTime; |
| 14479 | } |
| 14480 | request.urlList.push(locationURL); |
| 14481 | setRequestReferrerPolicyOnRedirect(request, actualResponse); |
| 14482 | return mainFetch(fetchParams, true); |
| 14483 | } |
| 14484 | function httpNetworkOrCacheFetch(fetchParams, isAuthenticationFetch = false, isNewConnectionFetch = false) { |
| 14485 | return __async(this, null, function* () { |
| 14486 | const request = fetchParams.request; |
| 14487 | let httpFetchParams = null; |
| 14488 | let httpRequest = null; |
| 14489 | let response = null; |
| 14490 | const httpCache = null; |
| 14491 | const revalidatingFlag = false; |
| 14492 | if (request.window === "no-window" && request.redirect === "error") { |
| 14493 | httpFetchParams = fetchParams; |
| 14494 | httpRequest = request; |
| 14495 | } else { |
| 14496 | httpRequest = cloneRequest(request); |
| 14497 | httpFetchParams = __spreadValues({}, fetchParams); |
no test coverage detected