http 301、302 重定向,处理过程分析

http 301、302 重定向,处理过程分析

一、定义:
    响应码:301、302 ,都代表重定向,其中 301 代表永久重定向,302 代表临时重定向;

二、服务器场景:
    请求 www.aa.com/a.html ,重定向到 www.aa.com/b.html;
    请求 www.aa.com/b.html ,重定向到 www.aa.com/c.html;

三、客户端场景:
    请求 www.aa.com/a.html,浏览器展现了 www.aa.com/c.html 内容;其中隐藏了 b.html 到 c.html 过程。


四、重定向时客户端发生了什么?
使用 firefox 调试工具可以看到如下过程:
    www.aa.com/a.html    302
    www.aa.com/b.html    302
    www.aa.com/c.html    200

浏览器发现响应码为 301、302 时,将读取 header 中的 location 值,重新发起请求;
    www.aa.com/a.html    302
        headers.location = www.aa.com/b.html
    www.aa.com/b.html    302
        headers.location = www.aa.com/c.html
    www.aa.com/c.html    200


五、c# 模拟重定向处理过程,跟踪重定向过程

public static string RedirectPath(string url)
{
    StringBuilder sb = new StringBuilder();
    string location = string.Copy(url);
    while (!string.IsNullOrWhiteSpace(location))
    {
        sb.AppendLine(location); // you can also use 'Append'
        HttpWebRequest request = HttpWebRequest.CreateHttp(location);
        request.AllowAutoRedirect = false;
        using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
        {
            //读取 header 中的 locantion 值
            location = response.GetResponseHeader("Location");
        }
    }
    return sb.ToString();
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HTTP(HyperText Transfer Protocol)是一个基于客户端-服务器(client-server)模型的协议,用于在Web应用程序中传输数据。HTTP协议通常使用TCP作为它的传输层协议。 HTTP操作的过程: 1. 客户端向服务器发送请求。 2. 服务器接收请求并提供响应。 3. 客户端接收响应。 HTTP请求消息由以下部分组成: 1. 请求行(Request Line):包括请求方法、请求资源的URI和HTTP协议的版本。 2. 请求头部(Request Headers):包括客户端信息、接受的数据类型、Cookie等信息。 3. 请求正文(Request Body):可选,包括请求提交的数据。 HTTP响应消息由以下部分组成: 1. 状态行(Status Line):包括HTTP协议版本、状态码和状态描述。 2. 响应头部(Response Headers):包括服务器信息、响应时间、响应内容类型等信息。 3. 响应正文(Response Body):包括响应的数据。 常见的HTTP状态码有: - 200 OK:请求成功 - 301 Moved Permanently:永久定向 - 302 Found:临时定向 - 400 Bad Request:请求错误 - 401 Unauthorized:未授权 - 403 Forbidden:禁止访问 - 404 Not Found:未找到资源 - 500 Internal Server Error:服务器错误 HTTP协议中的各项信息含义: - 请求方法:GET、POST、PUT、DELETE等,表示请求的类型。 - URI:Uniform Resource Identifier,统一资源标识符,用来标识资源的位置。 - HTTP协议版本:HTTP/1.0、HTTP/1.1、HTTP/2.0等。 - 请求头部:客户端信息、接受的数据类型、Cookie等信息。 - 请求正文:请求提交的数据。 - 状态码:表示请求的处理结果。 - 状态描述:对状态码的描述。 - 响应头部:服务器信息、响应时间、响应内容类型等信息。 - 响应正文:响应的数据。 以上是HTTP操作的过程及各项信息的含义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值