调用res.redirect

时间:2017-11-25 14:14:12

标签: node.js express middleware

我正在尝试编写一个代码,用于将我的所有Http请求重定向到Https,现在我想问我在许多不同的网站上看到过以下代码,但其中一些使用{{1} } return,有些人使用res.redirect return after,有些人不使用任何内容,有些人只使用res.redirect next() {{ 1}}。

我只是想问一下afterres.redirect在这里使用return的用途。或者我在这里遗漏了什么?

next()

2 个答案:

答案 0 :(得分:2)

next()是Express中间件的一部分。它告诉在函数流程图上执行下一个中间件函数。如果未使用,则不会执行下一个中间件。

return仅用于确保在触发回调后执行停止,即无论是否将nextredirectpublic class Main extends JavaPlugin implements Listener { public ArrayList<Player> players = new ArrayList<>(); // My HashMap with the threads private HashMap<BukkitTask, Integer> game = new HashMap<>(); public void onEnable() { this.getServer().getPluginManager().registerEvents(this, this); // Create a thread here and let it run the whole game BukkitTask task = new Game(this).runTaskTimer(this,1,20); game.put(task, task.getTaskId()); } public void onDisable() { } // Eventhandlers that control the ArrayList with players @EventHandler public void onJoin(PlayerJoinEvent e) { Player player = e.getPlayer(); this.players.add(player); if (!this.players.contains(player)) { this.players.add(player); } } @EventHandler public void onQuit(PlayerQuitEvent e) { Player player = e.getPlayer(); if (!this.players.contains(player)) { this.players.remove(player); } } } 一起使用,都不会再次处理回调的任何部分停止执行该特定功能。

答案 1 :(得分:0)

通常,我建议使用:

return res.redirect("https://" + req.headers.host + req.url);

由于在这种情况下,您显式返回了重定向响应。

在大多数情况下,仅res.redirect()就足够了,并且确实具有重定向响应(HTTP 302),但是服务器日志中可能会出现错误,尤其是在async (req, res) => {}函数中使用它时。