ASP.NET Core 6 Web app with index.html using <base href> would not load script files

Viewed 49

I have an ASP.NET Core 6 app and I host my Angular app with it, among other things (from Program.cs):

...
app.Use(async (context, next) =>
{
    RewriteXFrameOptionsHeader(context);

    await next();

    if (context.Response.StatusCode == 404 && !Path.HasExtension(context.Request.Path.Value))
    {
        context.Request.Path = "/";
        await next();
    }
});

app.UseDefaultFiles(new DefaultFilesOptions {DefaultFileNames = new List<string> {"index.html"}});
app.UseStaticFiles();
...

It it doesn't work, because scripts are not loaded. The Angular index.html uses base href and relative paths to js sources, like so:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <base href="/ngxapp">
...
<script src="runtime.7cef1b4acdcbe752.js" type="module"></script><script src="polyfills.e4b5afbd657fbe4a.js" type="module"></script><script src="main.c8a9bcf210ef6760.js" type="module"></script>

</body>
</html>

Even though script src's contain relative paths, the browser tries to load script from the root. Here's what dev tools Network tab shows:

Request URL: https://localhost:7101/runtime.7cef1b4acdcbe752.js

MDN docs for base href state:

The HTML element specifies the base URL to use for all relative URLs in a document.

Why then scripts are being loaded from root?

0 Answers
Related