ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Linux网络(十一):HTTP重定向与请求方法详解:从301/302状态码到GET/POST,再认识Fiddler抓包

Linux网络(十一):HTTP重定向与请求方法详解:从301/302状态码到GET/POST,再认识Fiddler抓包 ◆ 博主名称 小此方-CSDN博客大家好欢迎来到小此方的博客。⭐️网络系列个人专栏 【主题曲】计算机网络⭐️此方的GitHub github_此方⭐️我们思考 (Rethink) · 我们重建 (Rebuild) · 我们记录 (Record)文章目录概要序論一、什么是重定向1.1 临时重定向的故事1.2 永久重定向的故事1.3重定向状态码有哪些1.3.1两种重定向分别拿来干什么1.4临时重定向和永久重定向的严谨概念1.4.1HTTP状态码301永久重定向1.4.2HTTP状态码302临时重定向1.4.3永久重定向真正的价值二、重定向的原理/应用2.1用重定向处理错误请求Tips讲点故事三、HTTP常见的方法3.1详解POST/GET方法3.1.1 表单提交与参数传递方式3.1.2 GET与POST的核心区别总结3.1.2.1 传输机制与数据位置3.1.2.2 参数长度限制3.1.2.3安全性分析Tips抓包工具介绍——费德勒3.2.1 Fiddler的基本原理3.2.2 混杂模式与网络代理的区别概要序論Hello大家好我是此方上一期我们讲了状态码异常处理和HTTP请求与应答报文的字段本文继续深入 HTTP 协议首先从实际场景出发理解什么是重定向并区分临时重定向与永久重定向重点分析 301、302 等状态码及其应用。随后深入介绍 HTTP 中常见的 GET 与 POST 方法从表单提交、参数传递、数据位置、长度限制和安全性等角度理解二者的区别。最后介绍 Fiddler 抓包工具及网络代理的基本原理通过实际观察 HTTP 请求与响应加深对 HTTP 通信过程的理解。一、什么是重定向我们先不讲复杂难懂的概念先来讲两个故事。1.1 临时重定向的故事你们学校的西门外有一家牛肉面馆。你和你的朋友有一天想去东门吃牛肉面到了东门看到店门口贴着一张告示“由于道路施工本馆临时搬迁至西门”。于是你和你的朋友转到西门去吃。一个月后你还想去吃一次牛肉面这个时候你去东门还是去西门当然是先去西门看看因为你不知道他们家有没有搬回来了。这个过程就是临时重定向。1.2 永久重定向的故事好我们继续又过了一个月后你还想去吃一次牛肉面到了西门看到布告上面写着“本店永久搬迁到东门”于是你去东门吃。又又过了一个月你再去吃牛肉面你会去哪里当然是去东门。因为你知道牛肉面馆永久搬迁到东门了。这个过程就是永久重定向。1.3重定向状态码有哪些HTTP我们有很多状态码我们在上一期基本讲过了还剩下一个重定向重定向3xx状态码展开有四种情况1.3.1两种重定向分别拿来干什么从这张表格中我们不难看出来临时重定向不改变任何信息所以临时重定向适合做什么工作登录跳转页面跳转之类的工作。那么永久重定向适合拿来干什么适合网站更换域名或者更换网址。好的是时候把专业的概念搬出来了。1.4临时重定向和永久重定向的严谨概念HTTP状态码301永久重定向和302临时重定向都依赖Location选项。包括这个我们上一篇零零总总聊了很多的报头选项是的我们待会儿会做总结。 以下是关于两者依赖Location选项的详细说明1.4.1HTTP状态码301永久重定向当服务器返回HTTP 301状态码时表示请求的资源已经被永久移动到新的位置。在这种情况下服务器会在响应中添加一个Location头部用于指定资源的新位置。这个Location头部包含了新的URL地址浏览器会自动重定向到该地址。例如在HTTP响应中可能会看到类似于以下的头部信息HTTP/1.1 301 Moved Permanently\r\n Location: [https://www.new-url.com](https://www.new-url.com)\r\n1.4.2HTTP状态码302临时重定向当服务器返回HTTP 302状态码时表示请求的资源临时被移动到新的位置。同样地服务器也会在响应中添加一个Location头部来指定资源的新位置。浏览器会暂时使用新的URL进行后续的请求但不会缓存这个重定向。例如在HTTP响应中可能会看到类似于以下的头部信息HTTP/1.1 302 Found\r\n Location: [https://www.new-url.com](https://www.new-url.com)\r\n总结来讲无论是HTTP 301还是HTTP 302重定向都需要依赖Location选项来指定资源的新位置。这个Location选项是一个标准的HTTP响应头部用于告诉浏览器应该将请求重定向到哪个新的URL地址。也许你还没有真正理解——什么是永久重定向。这确实很抽象我给你举一个例子你就明白了。1.4.3永久重定向真正的价值临时重定向和永久重定向对于用户来说实际上没什么区别。关键影响的是搜索引擎。你向搜索引擎搜索东西比如腾讯搜索引擎就会拿着自己保存的那条这个公司的网址加上关键字加上描述信息给你构建出一条搜索结果。搜索引擎定期会去更新他保存的那一堆网址。但是如果公司修改了网址并且没有在搜索引擎请求的时候返回“301永久重定向”这样搜索引擎就不会更新他的数据依然用老的链接。所以这就是永久重定向真正并且是最大的价值网站换域名后自动跳转到新域名搜索引擎更新网站链接时使用二、重定向的原理/应用讲完什么是重定向那么重定向到底是什么实现的呢我们来看看。浏览器向服务器发送请求。服务器发送应答包含 HTTP/1.1 30X …、Location: s2新地址、空行、none。HTTP的请求至少是三部分重定向返回可能没有报文。浏览器解析应答得知30x状态码于是读取location。以location为新的目标服务器地址发送二次请求请求内容一致。2.1用重定向处理错误请求一种新的设计思路我们可以以后如果出错了本应该跳转到对应的错误页面需要我们手动构建。但是现在我们可以直接重定向然后二次请求的时候我们返回重定向后的错误页面这个时候我们就可以返回200状态码了。SetCode(302);SetHeader(Location,[http://8.137.19.140:8080/404.html](http://8.137.19.140:8080/404.html));returntrue;对应我们的代码就是Network-ProgrammingTips讲点故事和文章内容无关可以跳过在千禧年前后那是上网都用电脑的时代最重要的一款软件就是浏览器所有人想上网都想打开它。在还没进入移动互联网时代的当年浏览器就是绝对的流量入口。早期最厉害的浏览器叫做领航员Netscape Navigator浏览器。后来微软看到了巨大的商机于是基于现有的 Windows 操作系统市场推出了自己的 IE 浏览器依靠软件预装的优势迅速占领了全球市场领航员浏览器也就这样挂掉了。随后很多公司都开始做浏览器因为浏览器有利可图不仅能掌握流量还可以内置搜索引擎。为了竞争这块市场谷歌也卷入其中于是 Chrome 浏览器应运而生并且 Chrome 是开源的。然而浏览器距离利益实在是太近了各家都有各自的浏览器技术谁也不服谁。一个行业想要蓬勃发展就需要一套统一的标准但当时大家的水平都差不多对标准的支持也都不太好。直到万维网联盟W3C等标准化组织发力加上 Chrome 凭实力建立起事实上的标准浏览器之间各自为政的乱局才终于画上了句号。三、HTTP常见的方法讲讲HTTP的方法前两篇我们提到过。3.1详解POST/GET方法在HTTP协议中GET与POST是最常使用的两种请求方法。通常情况下GET方法主要用于获取静态资源如图片、视频、音效、网页等而POST方法主要用于上传资源。但在实际应用中GET既可以获取资源也可以上传资源。3.1.1 表单提交与参数传递方式在网页前端例如登录页面Login表单提交参数时默认的方式是GET。当用户在登录界面输入用户名和密码点击登录时请求会被发送至后台GET提交参数GET如果需要进行参数的提交主要是通过URI的方式进行提交。提交的参数会以问号?作为分隔符挂在URL的后面例如http://8.137.19.140:8080/Login?usernamelisipassword54321。POST提交参数POST提交参数时参数是通过HTTP请求正文Request Body进行提交的例如在请求报文的正文末尾附带usernamelisipassword54321。我们在后台制作和注册服务接口客户端就可以以HTTP请求代码的形式来获取这种服务这种风格的后台服务我们称之为RESTful。3.1.2 GET与POST的核心区别总结针对GET和POST的使用场景与传输特性可以从以下几个维度进行对比3.1.2.1 传输机制与数据位置GET方式主要用于获取静态网页或资源若要提交参数必须以URI的方式进行提交。POST方式主要通过请求正文Body进行数据提交。3.1.2.2 参数长度限制GET提交参数建议提交的参数不要过长因为URI的长度一般都是有限制的。POST正文传参通过正文传输意味着可以传递长数据突破了URI的长度约束。3.1.2.3安全性分析GET方式提交参数时会在地址栏回显显式呈现在URL中非常直观且不够安全。POST方式提交参数时不会回显在地址栏相对更加隐蔽。需要特别注意的是无论GET还是POST明文传输都不安全因为数据都可以被抓包工具截获。要做到真正的安全必须对报文进行加密也就是采用HTTPS协议。Tips抓包工具介绍——费德勒3.2.1 Fiddler的基本原理当我们在浏览器中输入用户名和密码向服务器发起请求时Fiddler作为抓包工具介入了整个交互过程浏览器构建请求Fiddler抓到的报文是已经被浏览器构建完毕的HTTP请求也就是将来要发送到网络中的数据。Fiddler拦截与二次发送Fiddler抓取到客户端发起的请求后会向真正的服务器发起二次请求即抓完了原样继续发送出去。服务器受理与响应目标服务器受理该请求后做出响应回应同样会先在Fiddler侧经过转接然后再传送到客户端浏览器。通过这样的机制使用者就可以在Fiddler中清晰地看到拦截到的请求内容进而得知传输的数据与账号密码信息。3.2.2 混杂模式与网络代理的区别在理解Fiddler的工作机制时需要注意避免一个常见的技术误区。部分资料中提及“发送到局域网中的信息会被局域网下的所有主机接收打开费德勒无差别接收网络请求”这实际上描述的是Wireshark等网卡抓包工具的工作原理。Wireshark是利用网卡的混杂模式Promiscuous Mode来监听局域网中的数据包。而Fiddler的真正工作原理是HTTP/HTTPS代理Proxy代理设置Fiddler在启动时会自动将系统的HTTP/HTTPS代理设置为127.0.0.1:8888。请求重定向浏览器感知到系统代理后会主动将原本要发送给远端服务器的请求先发送给Fiddler。中间人转发Fiddler收到请求后作为“中间人”代为发送给目标服务器收到服务端响应后再将响应原封不动转交给浏览器。关于代理的相关内容已经在写了敬请期待。好的本期内容就到这里如果对你有帮助还不要忘记点赞三联支持。我是此方我们下期再见。bye!
返回列表