总结:301是永久跳转并且有缓存,而302是临时跳转,没有缓存。
使用场景:当迁移域名当时候,网站域名是永久性转移,这时可以用301;
而当只是在服务器内部跳转,比如访问服务器a.com/test,需要跳转到另外一个路由处理b.a.com/test
定义
301 Moved Permanently
被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个 URI 之一。如果可能,拥有链接编辑功能的客户端应当自动把请求的地址修改为从服务器反馈回来的地址。除非额外指定,否则这个响应也是可缓存的。
302 Found
请求的资源现在临时从不同的 URI 响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在Cache-Control或Expires中进行了指定的情况下,这个响应才是可缓存的。
举例
下面用到python中到flask框架,需要
pip install flask
pip install qrcode
from flask import Flask, Response, redirect app = Flask(__name__) localhost = "你到局域网ip:5000" @app.route("/redirect") def hello(): return redirect("http://www.wsppx.cn", code=302) @app.route("/") def img(): return "<img src='static/test.png'></img>" def trace_url(): import qrcode img = qrcode.make("http://{}/redirect".format(localhost)) img.save("static/test.png") if __name__ == '__main__': trace_url() app.run(host='0.0.0.0',port=5000)
当访问 127.0.0.1:5000会出现一个二维码,这个时候使用手机微信扫码就行。
先测试302状态码,因为301有缓存,会导致每次结果一样。。
测试302
当代码为redirect(“https://www.wsppx.cn”, code=302),跳转的是wsppx.cn ,这时候修改为redirect(“https://www.baidu.com”, code=302) 重启后,扫描访问,可以发现成功跳转到baidu。
测试301
把代码改为redirect(“http://www.wsppx.cn”, code=301),跳转到是wsppx.cn,这时候修改为redirect(“https://www.baidu.com”, code=301) 重启后,扫描访问,跳转的还是wsppx.cn,因为有缓存。
原创文章,作者:站长,如若转载,请注明出处:https://wsppx.cn/1206/%e7%bd%91%e7%bb%9c%e5%bc%80%e5%8f%91/