如果用戶輸入了錯誤的 url 路由,我已經創建了一個到 404.html 頁面的路由
app.use(function (req, res, next) {
res.status(404).sendFile('public/404.html', {root: __dirname})
})
問題是,當我輸入現有路由時(在這種情況下,我使用 oauth google 身份驗證)它仍然會引導我到我創建的 404 頁面,但它應該將我重定向到 google 登錄頁面。
app.get('/google', passport.authenticate('google', { scope: ['profile', 'email'] }));
與注銷相同,它會將我帶到 404 頁面
app.get('/logout', (req, res) => {
console.log(`\n`);
console.log('\x1b[1m\x1b[31m', `*** User ${req.user.displayName} has logged out ***`);
req.session = null;
req.logout();
res.redirect('/');
});
uj5u.com熱心網友回復:
您的 404 路線必須是您宣告的最后一條路線。申報順序很重要。這樣,404 路由處理程式僅在沒有其他路由已經處理請求(這是您希望它執行的操作)時才執行。
在 Express 中,路由嘗試按照路由處理程式注冊的順序匹配傳入請求。由于您的 404 處理程式匹配所有路由,因此它必須放在最后,以便僅在沒有其他路由處理程式已經接受請求時才起作用。
uj5u.com熱心網友回復:
這是我經常使用的:
// Pages
app.get('/file', function(req, res){
res.sendFile('/path/to/file.html');
});
// 404
app.get('*', function(req, res){
res.sendFile('/path/to/404/file.html');
res.statusCode = 404;
});
確保 404 處理程式在所有現有回應之后,并確保在更新后重新啟動服務器。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/343604.html
