почему я получаю favicon.ico, когда использую метод findOne для маршрутов express params? - PullRequest
0 голосов
/ 14 апреля 2020

когда я использую метод list.save (), объект, отличный от имени customList, которое является favicon.ico, также сохраняет как запись в следующем коде. Почему я выбираю favicon.ico как объект.

app.get('/:listRoute',function (req,res) {

    const customList=(req.params.listRoute);
    List.findOne({name:customList }, function (err,result) {
        if (!err) {
            if (!result) {
                const list=new List({
                    name: customList,
                    items: defaultItems
                })
                list.save();
            } else {
                console.log(result);

                res.render('list', {
                    listTitle: result.name,
                    latestItems: result.items})
            }
            } 

    });
    })

1 Ответ

0 голосов
/ 14 апреля 2020

Когда вы посещаете веб-сайт (любой URL-адрес на этом веб-сайте), браузер, как правило, также отправляет запрос на тот же домен для /favicon.ico, поэтому посмотрите, предлагает ли веб-сайт значок для визуального представления сайта.

Поскольку вы используете подстановочный маршрут верхнего уровня:

app.get('/:listRoute', ...)

На него попадет запрос на /favicon.ico. Некоторые другие URL-адреса, которые вам также, возможно, необходимо отслеживать для получения запроса: /robots.txt, /humans.txt, /sitemap.xml, /ads.txt.


Существует несколько способов обойти эту проблему. :

  1. Ваш маршрутный символ может сначала проверить req.url, чтобы определить, следует ли его игнорировать.

  2. Вы можете разместить другие маршруты верхнего уровня вы хотите, чтобы ваш маршрутный маршрут не попадал в позицию перед этим маршрутом, чтобы они не оказались в этом.

  3. Не используйте групповой маршрут верхнего уровня. Вместо этого используйте что-то вроде /list/:listRoute, чтобы оно не совпадало ни с одним http-запросом верхнего уровня. Использование вами подстановочного маршрута верхнего уровня мешает другим будущим использованиям вашего сайта и может создать обратную совместимость, если вы захотите добавить другие маршруты верхнего уровня на свой сайт. Представьте, что когда-нибудь в будущем вы захотите добавить /contact или /login или /logout. Все они конфликтуют с /:listRoute.

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