tolgasen adlı üyeden alıntı: mesajı görüntüle
Evet, bu tam olarak işini görecektir.
site.com/main olarak çağırılmasın, sadece fetch ile çağırılsın istersen de fetch isteğine header olarak bir token ekleyip router içinde o header var mı yok mu onu kontrol edebilirsin.
Anladım değerli bilgiler için teşekkür ederim. Tolga hocam. şu şekilde çevirdim.
app.use('/main', function(req, res, next) {
    if (!req.xhr) {
        return res.status(403).send('Forbidden');
    }
    next();
});

app.get('/main', function(req, res) {
    res.render('main');
});