fix(service-worker): correctly handle relative base href (#37922)
In some cases, it is useful to use a relative base href in the app (e.g. when an app has to be accessible on different URLs, such as on an intranet and the internet - see #25055 for a related discussion). Previously, the Angular ServiceWorker was not able to handle relative base hrefs (for example when building the with `--base-href=./`). This commit fixes this by normalizing all URLs from the ServiceWorker configuration wrt the ServiceWorker's scope. Fixes #25055 PR Close #37922
This commit is contained in:
@ -131,7 +131,10 @@ function matches(file: string, patterns: {positive: boolean, regex: RegExp}[]):
|
||||
|
||||
function urlToRegex(url: string, baseHref: string, literalQuestionMark?: boolean): string {
|
||||
if (!url.startsWith('/') && url.indexOf('://') === -1) {
|
||||
url = joinUrls(baseHref, url);
|
||||
// Prefix relative URLs with `baseHref`.
|
||||
// Strip a leading `.` from a relative `baseHref` (e.g. `./foo/`), since it would result in an
|
||||
// incorrect regex (matching a literal `.`).
|
||||
url = joinUrls(baseHref.replace(/^\.(?=\/)/, ''), url);
|
||||
}
|
||||
|
||||
return globToRegex(url, literalQuestionMark);
|
||||
|
Reference in New Issue
Block a user