При использовании node.js & Express, почему лишний / в адрес разрывает ссылку на изображение, но не HTML-файл? - PullRequest
0 голосов
/ 17 сентября 2018

Следующий тестовый код работает, как и ожидалось, когда http://localhost:3000/test введено в адресной строке.

Это из app.js

app.get("/test", (req, res) => {
    res.sendFile(__dirname + "/public/index.html");
});

app.use(express.static("public"));

Этоfrom index.html

<img src="images/cat.jpg">

Однако, когда я ввожу http://localhost:3000/test/ (обратите внимание на дополнительные / в конце) в адресной строке index.html обслуживается, кроме cat.Изображение jpg отображается как неработающая ссылка.

Возможно, мне не хватает фундаментальной концепции, но я не понимаю, почему дополнительный / разрывает ссылку на изображение, но index.html все еще обслуживается.Почему это не сломает их обоих или ни того, ни другого?

1 Ответ

0 голосов
/ 17 сентября 2018

Из-за того, как браузер разрешает URL-адреса.Ваш первый URL, когда браузер ищет изображение, будет преобразован в http://localhost:3000/images/cat.jpg,, поскольку исходный URL заканчивается как ресурс /test.

Вторая версия URL, который вы заканчиваете как каталог /test/, поэтому разрешенный URL для изображения будет http://localhost:3000/test/images/cat.jpg.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...