res.redirect()
是一个在服务器端用于重定向用户请求到另一个 URL 的方法。当你在 Node.js 中使用 Express 框架时,这个方法非常常见。当你调用 res.redirect()
后,服务器会向客户端发送一个特殊的 HTTP 状态码(通常是 302)和一个新的 URL,告诉浏览器去请求这个新的 URL。
当你使用 res.redirect()
后刷新页面,可能会遇到页面重复提交的问题。这是因为刷新页面会重新发送最后一次请求,如果这个请求是一个表单提交或者是一个有副作用的操作,那么这个操作会被执行多次。
res.redirect()
将用户重定向到一个 GET 请求的页面。这样,即使用户刷新页面,也只会重新加载 GET 请求的页面,而不会重复执行 POST 请求的操作。app.post('/submit-form', (req, res) => {
// 处理表单数据
// ...
// 重定向到另一个页面
res.redirect('/success');
});
app.get('/success', (req, res) => {
res.send('Form submitted successfully!');
});
const express = require('express');
const app = express();
app.use(express.urlencoded({ extended: true }));
app.post('/submit', (req, res) => {
// 假设这里是处理表单提交的逻辑
console.log('Form data:', req.body);
// 重定向到成功页面
res.redirect('/success');
});
app.get('/success', (req, res) => {
res.send('Your form has been submitted successfully!');
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
在这个例子中,当用户提交表单到 /submit
路径时,服务器会处理表单数据然后重定向到 /success
页面。如果用户刷新 /success
页面,不会有任何副作用,因为这是一个 GET 请求,不涉及表单数据的提交。
领取专属 10元无门槛券
手把手带您无忧上云