MCPcopy Create free account
hub / github.com/nodejs/node / determineRequestsReferrer

Function determineRequestsReferrer

deps/undici/undici.js:5459–5522  ·  view source on GitHub ↗
(request)

Source from the content-addressed store, hash-verified

5457 }
5458 __name(clonePolicyContainer, "clonePolicyContainer");
5459 function determineRequestsReferrer(request) {
5460 const policy = request.referrerPolicy;
5461 assert(policy);
5462 let referrerSource = null;
5463 if (request.referrer === "client") {
5464 const globalOrigin = getGlobalOrigin();
5465 if (!globalOrigin || globalOrigin.origin === "null") {
5466 return "no-referrer";
5467 }
5468 referrerSource = new URL(globalOrigin);
5469 } else if (webidl.is.URL(request.referrer)) {
5470 referrerSource = request.referrer;
5471 }
5472 let referrerURL = stripURLForReferrer(referrerSource);
5473 const referrerOrigin = stripURLForReferrer(referrerSource, true);
5474 if (referrerURL.toString().length > 4096) {
5475 referrerURL = referrerOrigin;
5476 }
5477 switch (policy) {
5478 case "no-referrer":
5479 return "no-referrer";
5480 case "origin":
5481 if (referrerOrigin != null) {
5482 return referrerOrigin;
5483 }
5484 return stripURLForReferrer(referrerSource, true);
5485 case "unsafe-url":
5486 return referrerURL;
5487 case "strict-origin": {
5488 const currentURL = requestCurrentURL(request);
5489 if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) {
5490 return "no-referrer";
5491 }
5492 return referrerOrigin;
5493 }
5494 case "strict-origin-when-cross-origin": {
5495 const currentURL = requestCurrentURL(request);
5496 if (sameOrigin(referrerURL, currentURL)) {
5497 return referrerURL;
5498 }
5499 if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) {
5500 return "no-referrer";
5501 }
5502 return referrerOrigin;
5503 }
5504 case "same-origin":
5505 if (sameOrigin(request, referrerURL)) {
5506 return referrerURL;
5507 }
5508 return "no-referrer";
5509 case "origin-when-cross-origin":
5510 if (sameOrigin(request, referrerURL)) {
5511 return referrerURL;
5512 }
5513 return referrerOrigin;
5514 case "no-referrer-when-downgrade": {
5515 const currentURL = requestCurrentURL(request);
5516 if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) {

Callers 1

mainFetchFunction · 0.70

Calls 7

getGlobalOriginFunction · 0.70
stripURLForReferrerFunction · 0.70
requestCurrentURLFunction · 0.70
sameOriginFunction · 0.70
assertFunction · 0.50
toStringMethod · 0.45

Tested by

no test coverage detected