python重定向响应信息头_python Web开发:Django重定向总结part2,HTTP重定向的工作原理...

b58f8c5494eef01fa7c061781ad12b23bd317d69.png?token=65ec3bc3cee5f3ef9dd68edea530720a

引文:昨天知识点

1.Django重定向实例来介绍它的含义2.为什么要进行重定向python Web开发:Django重定向总结part1,为什么要重定向?

今天我们将一起看一下HTTP重定向的工作原理

现在您知道了为什么重定向有意义,但是它们如何工作?让我们快速回顾一下在Web浏览器的地址栏中输入URL时发生的情况。

HTTP快速入门

假设您已经创建了带有处理路径的“ Hello World”视图的Django应用程序/hello/。您正在使用Django开发服务器运行应用程序,因此完整的URL为http://127.0.0.1:8000/hello/。

在浏览器中输入该URL时,该URL将8000使用IP地址连接到服务器上的端口,127.0.0.1并发送HTTP GET请求路径/hello/。服务器使用HTTP响应进行回复。

HTTP是基于文本的,因此查看客户端和服务器之间的来回相对容易。您可以使用

curl带有选项的命令行工具--include查看完整的HTTP响应,包括标头,如下所示:

a686c9177f3e6709e7f09380c1e82d3bf9dc5597.png?token=69969a04016658a63c1407ac02f3a0fd查看完整的HTTP响应

如您所见,HTTP响应以包含状态码和状态消息的状态行开始。状态行后跟任意数量的HTTP标头。空行指示标头的末尾和响应正文的开始,其中包含服务器要发送的实际数据。

HTTP重定向状态代码

重定向响应是什么样的?假设该路径/redirect/是由redirect_view()所示的。如果您访问http://127.0.0.1:8000/redirect/使用curl,您的控制台看起来是这样的:

4ec2d5628535e5ddd9860f1f8fe915e9cf1b627a.png?token=4dc659449e72f7731d31a6e143031cf0redirect_view()

这两个响应可能看起来相似,但是存在一些关键区别。重定向:

返回不同的状态码(302与200)包含Location带有相对URL 的标头以空行结尾,因为重定向响应的主体为空主要区别在于状态码。HTTP标准的规范说明如下:

302(已找到)状态代码指示目标资源临时位于其他URI下。由于重定向有时可能会更改,因此客户端应继续将有效请求URI用于将来的请求。服务器应该在响应中生成一个Location头域,其中包含针对不同URI的URI引用。用户代理可以使用位置字段值进行自动重定向。

换句话说,每当服务器发送状态代码为时302,它对客户端说:“嘿,此刻,您正在寻找的东西可以在另一个位置找到。”

规范中的一个关键短语是“请使用位置字段值进行自动重定向”。这意味着您不能强制客户端加载另一个URL。客户端可以选择等待用户确认,也可以决定完全不加载URL。

现在,您知道重定向只是带有3xx状态码和Location标头的HTTP响应。这里的关键要点是HTTP重定向就像任何旧的HTTP响应一样,但是具有空的正文,3xx状态代码和Location标头。

就是这样。我们暂时将其与Django联系起来,但首先让我们看一下3xx状态码范围内的两种重定向类型,并了解在Web开发中它们为何如此重要。

b90e7bec54e736d17525697d3dc5fec4d5626929.png?token=ed1f207e0a6555ed2fe048c0cea91b5d

临时重定向与永久重定向

HTTP标准定义了几个重定向状态代码,它们都在该3xx范围内。两种最常见的状态代码是301 Permanent Redirect和302 Found。

状态代码302 Found指示临时重定向。临时重定向说:“目前,您要查找的内容可以在其他地址找到。” 可以将其想象为一个商店标语,上面写着:“我们的商店目前已关闭以进行装修。请到我们附近的其他商店。” 由于这只是暂时的,因此下次购物时会检查原始地址。

顾名思义,永久重定向应该是永久的。永久重定向告诉浏览器:“您要找的东西不再位于此地址。现在是在这个新地址,再也不会在旧地址了。”

永久重定向就像一个商店标语,上面写着:“我们搬了。我们的新店就在附近。” 此更改是永久性的,因此下次您要去商店时,您将直接转到新地址。

注意:永久重定向可能会带来意想不到的后果。在使用永久重定向之前,请先完成本指南,或直接跳至“永久重定向是永久的”部分。

浏览器在处理重定向时的行为类似:URL返回永久重定向响应时,将缓存此响应。下次浏览器遇到旧URL时,它将记住重定向并直接请求新地址。

缓存重定向可节省不必要的请求,并提供更好,更快的用户体验。

此外,临时重定向和永久重定向之间的区别与搜索引擎优化有关。

下篇文章我们将具体学习

在python Web项目中,怎样在Django框架使用重定向

b17eca8065380cd797de21655a6b1f3258828128.png?token=5fd3698047230f197bfccf5f891c42a8

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值