Express 是一个基于 Node.js 平台的极简、灵活的 web 应用框架。redirect
是 Express 中的一个方法,用于将请求重定向到另一个 URL。HTTP 状态码 304 表示“未修改”,即客户端请求的资源在上次请求后没有发生变化,服务器可以直接返回 304 状态码,而不需要再次传输资源内容。
res.redirect(301, url)
,表示资源永久转移到新的 URL。res.redirect(302, url)
,表示资源临时转移到新的 URL。res.redirect(303, url)
,表示客户端应使用 GET 方法获取资源。res.redirect(304, url)
,表示资源未修改,客户端可以使用本地缓存。当使用 Express 的 redirect
方法时,如果获得响应 304,但不执行任何操作,可能是以下原因:
ETag
或 Last-Modified
设置不正确,导致服务器无法正确判断资源是否修改。ETag
或 Last-Modified
头设置正确,以便服务器能够正确判断资源是否修改。例如:ETag
或 Last-Modified
头设置正确,以便服务器能够正确判断资源是否修改。例如:const express = require('express');
const app = express();
app.use((req, res, next) => {
if (req.path === '/old-path') {
res.setHeader('Cache-Control', 'no-cache, no-store, must-revalidate');
res.setHeader('Pragma', 'no-cache');
res.setHeader('Expires', '0');
res.redirect(301, '/new-path');
} else {
next();
}
});
app.get('/new-path', (req, res) => {
res.send('This is the new path');
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
通过以上方法,可以解决 Express redirect
获得响应 304 但不执行任何操作的问题。
领取专属 10元无门槛券
手把手带您无忧上云