状态码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开发的乐趣

● 扫码关注我们

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值