base-href в заголовке HTML, по-видимому, игнорируется для всех загруженных ресурсов

Может быть, у меня просто вся эта идея неверна, так что давайте проверим это. У меня есть следующий HTML

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <base href="/xyz"> 
        <link rel="stylesheet" href="styles.css">
    </head>
    <body>
    <app-root></app-root>
    <script src="runtime.js" defer=""></script><script src="polyfills.js" defer=""></script><script src="main.js" defer=""></script></body>
</html>

Теперь, когда я пытаюсь загрузить это в браузере со следующим URL-адресом: http://localhost:8080/xyz, он загружает index.html, но для всех активов (стили и файлы javascript) я получаю 404

введите здесь описание изображения

Я ожидаю, поскольку у меня есть эта base href=/xyz, что она будет префиксом всех URL-адресов ресурсов с этим URL-адресом, но, как вы можете видеть, это не так.

Для полноты вот моя файловая структура:

./server.js
./xyz/index.html
      styles.css
      .....

Таким образом, сервер обслуживает все файлы из пути /xyz.


person Jeanluca Scaljeri    schedule 24.02.2021    source источник


Ответы (1)


Относительные пути разрешаются путем взятия базового URL-адреса (http://localhost:8080/xyz), удаления всего, что находится после последней / в пути (что дает вам http://localhost:8080/), а затем добавления нового пути (http://localhost:8080/styles.css).

Если вы хотите /xyz/styles.css, вам нужно поставить / в конце вашего базового пути: <base href="/xyz/">

person Quentin    schedule 24.02.2021
comment
хорошо, это имеет смысл. Решение, в моем случае, состоит в том, чтобы установить базовую ссылку на: . - person Jeanluca Scaljeri; 24.02.2021