当http状态码为301或者302时,表示重定向,这意味着你所请求的url资源并不存在,服务器会给你一个新的url,这个新的url会放在响应头的Location部首中,浏览器就是根据它进行页面跳转的,这一切都是在用户无感知的状态下完成的。下面这张图很好的解释了重定向的过程
客户端发起请求,请求的资源是 /username,但是这个资源已经不存在了,所谓不存在,只是资源更换了url而已,现在url变成了 /uname。
要明白,这个改变发生下服务端,客户端的用户是不知道这个事情的,而服务端也无法把这个变化告诉给所有人,这种情况下,服务器可以返回301或者302重定向,在响应头中增加一个Location 部首,设置修改后的url /uname,当浏览器受到响应后,根据http状态码得知这是一个重定向,于是会去响应头中找到Location并根据这个值再次发起请求。
301代表永久转义,302代表暂时性转义。
在web开发中,除了上述的资源地址改变的情况下会用到重定向,用户直接访问未授权的url时也会使用重定向技术,如果用户访问的url需要登录以后才能看,那么服务器就会返回302,让浏览器跳转到登录页面,下面是一个简单的flask 重定向示例
from flask import redirect
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return redirect('/login')
@app.route('/login')
def login():
return 'login'
app.run(debug=True)
QQ交流群: 211426309