状态码301和302的区别?
301 Moved Permanently
永久性重定向。该状态码表示请求的资源已被分配了新的 URI,以后应使用资源现在所指的URI。
也就是说,如果已经把资源对应的 URI 保存为书签了,这时应该按 Location 首部字段提示的 URI 重新保存。
const http = require('http');
const server = http.createServer(function (req, res) {
res.writeHead(301, {'Location': 'http://www.baidu.com'});
res.end();
});
server.listen(3000);
302 Found
临时性重定向。该状态码表示请求的资源已被分配了新的 URI,希望用户(本次)能使用新的URI 访问。
和 301 Moved Permanently 状态码相似,但 302 状态码代表的资源不是被永久移动,只是临时性质的。换句话说,已移动的资源对应的 URI 将来还有可能发生改变。
比如,用户把 URI 保存成书签,但不会像 301 状态码出现时那样去更新书签,而是仍旧保留返回 302 状态码的页面对应的URI。
用法分析
字面上的区别就是301是永久重定向,而302是临时重定向。(注意:301重定向之后会产生缓存,也就是说下次如果修改了重定向的内容,可能不会立马生效)
301比较常用的场景就是使用域名跳转。
const express = require('express');
const app = express();
// 域名跳转
app.get('/', function (req, res) {
res.redirect(301, 'http://www.baidu.com');
});
app.listen(3000);
而302用来做临时跳转,比如未登录的用户访问用户中心重定向到登录的页面。
const express = require('express');
const app = express();
app.get('/', function (req, res) {
res.send('首页')
});
// 登录跳转
app.get('/user', function (req, res) {
res.redirect(302, '/login');
});
app.get('/login', function (req, res) {
res.send('登录')
});
app.listen(3000);
微信号 : 前端精髓
与你分享web开发的乐趣
● 扫码关注我们