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

#html #browser

#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

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

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

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

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

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

Ответ №1:

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

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

Комментарии:

1. хорошо, в этом есть смысл. Решение, в моем случае, состоит в том, чтобы установить базовую ссылку href на: .