From 0299f4af97b2b8a3823c78937b7d86cab19518cb Mon Sep 17 00:00:00 2001 From: Rob Walch Date: Thu, 25 Mar 2021 11:57:12 -0400 Subject: [PATCH] Disable CDN Tune-in "age" header check when `lowLatencyMode` is set to `false` Resolves #3680 --- src/loader/playlist-loader.ts | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/loader/playlist-loader.ts b/src/loader/playlist-loader.ts index 385f8575a79..72d10024ca6 100644 --- a/src/loader/playlist-loader.ts +++ b/src/loader/playlist-loader.ts @@ -686,13 +686,17 @@ class PlaylistLoader { return; } - // Avoid repeated browser error log `Refused to get unsafe header "age"` when unnecessary or past attempts failed - const checkAgeHeader = this.checkAgeHeader && levelDetails.live; - const ageHeader: string | null = checkAgeHeader - ? loader.getResponseHeader('age') - : null; - levelDetails.ageHeader = ageHeader ? parseFloat(ageHeader) : 0; - this.checkAgeHeader = !!ageHeader; + if ( + this.checkAgeHeader && + levelDetails.live && + this.hls.config.lowLatencyMode + ) { + const ageHeader = loader.getResponseHeader('age'); + levelDetails.ageHeader = ageHeader ? parseFloat(ageHeader) : 0; + // Avoid repeated browser error log `Refused to get unsafe header "age"` when unnecessary or past attempts failed + // Add an "Access-Control-Expose-Headers: age" header to playlist responses to prevent this CORS error + this.checkAgeHeader = ageHeader !== null; + } switch (type) { case PlaylistContextType.MANIFEST: