Node.js / Экспресс-маршрутизация на статический файл URL - PullRequest
1 голос
/ 19 августа 2011

У меня нет проблемы как таковой, так как у меня есть обходной путь. Однако процесс понимания и разработки обходного пути выявил то, что мне кажется фундаментальным пробелом в моих знаниях (как программист-самоучка, это часто случается ;-)!), И я не могу найти ответ подключить его куда угодно.

Стандартная настройка node.js / express, например:

app.get('/index.htm', function (request, response) {
    console.log("/index.htm");
});
app.get('*', function (request, response) {
    console.log("*");
});

Почему, когда пользователь подключается напрямую к index.htm (вводя URL-адрес, хотя я не пробовал переходить по ссылке), ничего не срабатывает? Страница обслуживается без проблем. Очевидный сценарий использования этого - проверить, прошел ли пользователь проверку подлинности перед обслуживанием статической страницы.

К вашему сведению, обходной путь состоит в том, чтобы передать пользователя по маршруту, такому как «/ authenticated» (что соответствует отлично), выполнить проверку, а затем перенаправить и в основном заблокировать все остальное.

Спасибо, что обучили меня заранее; -)

N

ОБНОВЛЕНИЕ вопроса Райноса - да (игнорируйте несоответствие имен переменных сервера / приложения).

// CREATE SERVER
var server = express.createServer();
server.configure(function() {
    server.use(express.static(__dirname + '/public'));
    server.use(express.logger());
    server.use(express.errorHandler({dumpExceptions: true, showStack: true}));
// start of session stuff
server.use(express.cookieParser());
server.use(express.session({store: sessionStore, secret: 'secret', key: 'express.sid'}));
});

Теперь я обнаружил, что маршрутизация в порядке, когда вы удаляете статический файл, т.е. в исходном примере удаление index.htm означает, что консоль теперь будет регистрировать «/index.htm».

N

1 Ответ

0 голосов
/ 18 декабря 2016

Просто для краткости в этом вопросе:

Экспресс-статический обработчик, если он находит файл, который он будет обслуживать, и не позволяет другим обработчикам вызываться.Если вы удалите его, будет вызван обработчик app.get('/index.htm'.Если вы хотите сделать обратный вызов для всех URL-адресов, просто добавьте server.use(function(req, res, next) {...}) до того, как все и эта функция будет вызываться на всех маршрутизаторах, убедитесь, что вы вызываете следующий, если хотите, чтобы вызывались другие промежуточные программы или обработчики маршрутов.

...