聊聊HTTP的那些事,以及在它背后的“勾当”

Posted e些事

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了聊聊HTTP的那些事,以及在它背后的“勾当”相关的知识,希望对你有一定的参考价值。


1

      

     URI 与 URL:

     很多人都知道URL叫统一资源定位符,但是对于URI却有些陌生。


    URI称为统一资源标识符,其实URL只是URI的一个子集,除此之外,URI还包括一个子类叫做URN,统一资源名称。


    比如我们访问百度“www.baidu.com”就是URL,也是URI。而URN只能识别这个链接的对象名字叫百度,却不能定位,而URL与URI可以进行定位,从而进行访问。


聊聊HTTP的那些事,以及在它背后的“勾当”


    超文本:

    平常我们喜欢叫网页的源码为html,其实它还有个名字,叫做超文本,英文名为“hypertext”,


我们在浏览器上看到的网页,就是由超文本解析而来。


    HTTP与HTTPS:

    "https//:baidu.com",我们访问百度的时候,URL的头部总会加上一个HTTPS,有时还会看到是HTTP,这两个其实是我们要访问资源时,需要的协议类型。


    HTTP全称为"Hyper Text Transfer Protocol",中文名叫做超文本传输协议。


    HTTP协议是用于从网络传输超文本数据到本地浏览器的传送协议,它能保证高效而准确地传送超文本文档。 


    HTTP 由万维网协会和 Internet 工作小组 IETF共同合作制定的规范,目前广泛使用的是 HTTP 1.1 版本。


    HTTPS是以安全为目标的 HTTP 通道,在 HTTP 下加入 SSL 层,简称为 HTTPS,因此通过它传输的内容都是经过SSL加密的。



聊聊HTTP的那些事,以及在它背后的“勾当”


    请求过程:

    我们在浏览器中输入“www.baidu.com”回车之后,便会在浏览器中显示百度的首页。


    这简单的操作其实涉及到了下面几个过程:


    首先我们浏览器会向百度网站所在的服务器发送一个请求。


    网站服务器收到这个请求之后进行处理和解析然后返回对应的响应,接着传回给浏览器。


    响应里包含了页面的源代码等内容,浏览器再对其进行解析,便将网页呈现了出来。

聊聊HTTP的那些事,以及在它背后的“勾当”


    下面我们来详细演示一下这个过程:


    以Chrome浏览器为例,我先访问百度。


    打开开发者工具(f12),我们发现Network下有许多的条目。其中一个条目就表示一次请求和接收响应的过程。


聊聊HTTP的那些事,以及在它背后的“勾当”


    我们以第一个网络请求,www.baidu.com为例。


聊聊HTTP的那些事,以及在它背后的“勾当”


首先是 General 部分


         Request URL 为请求的 URL,


         Request Method 为请求的方法,


         Status Code 为响应状态码,



         Referrer Policy 为 Referrer判别策略。


        再往下,还有 Response Headers 和 Request Headers,这分别代表响应头和请求头。


    

        请求,由客户端向服务端发出,可以分为 4部分内容:请求方法( Request Method )、 请求的网址 ( Request URL )、请求头( Request Headers )、 请求体( Request Body )。


        请求方法常见的有get,post这两种方法。


        在浏览器中直接输入URL并回车,这便发起了一个 GET 请求,请求的参数会直接包含到 URL 里。 


        例如,在百度中搜索 微信,这就是一个 GET请求,链接为 https://www.baidu.com/s?wd=微信, 其中 URL 中包含了请求的参数信息,这里参数 wd 表示要搜寻的关键字。


        聊聊HTTP的那些事,以及在它背后的“勾当”


         POST 请求大多在表单提交 时发起。比如,对于一个登录表单,输入用户名和密码后,点击“登录”按钮,这通常会发起一个 POST 请求,其数据通常以表单的形式传输,而不会体现在 URL 中。 


        GET 和 POST请求方法有如下区别。 


        GET 请求中的参数包含在 URL 里面,数据可以在 URL 中看到,而 POST 请求的 URL 不会包 含这些数据,数据都是通过表单形式传输的,会包含在请求体中。 


        GET请求提交的数据最多只有 1024 字节,而 POST方式没有限制。 


        一般来说,登录时,需要提交用户名和密码,其中包含了敏感信息,使用 GET 方式请求的话, 密码就会暴露在 URL 里面,造成密码泄露,所以这里最好以 POST方式发送。 


        上传文件时,由于文件 内容比较大,也会选用 POST 方式。我们平常遇到的绝大部分请求都是 GET 或 POST请求,另外还有一些请求方法,如 GET、 HEAD、 POST、 PUT、 DELETE、 OPTIONS 、 CONNECT、 TRACE 等



聊聊HTTP的那些事,以及在它背后的“勾当”


    请求头,用来说明服务器要使用的附加信息,比较重要的信息有 Cookie、 Referer、 User-Agent等。 

    聊聊HTTP的那些事,以及在它背后的“勾当”


        Accept:请求报头域,用于指定客户端可接受哪些类型的信息。 


        Accept-Language:指定客户端可接受的语言类型。 


        Accept-Encoding :指定客户端可接受的内容编码。 


        Host:用于指定请求资源的主机 IP 和端口号,其内容为请求 URL 的原始服务器或网关的位 置。 从 HTTP 1. l 版本开始,请求必须包含此内容。 

        

        Cookie :也常用复数形式 Cookies,这是网站为了辨别用户进行会话跟踪而存储在用户本地 的数据。它的主要功能是维持当前访问会话。 


        例如,我们输入用户名和密码成功登录某个网 站后,服务器会用会话保存登录状态信息,后面我们每次刷新或请求该站点的其他页面时, 会发现都是登录状态,这就是 Cookies 的功劳。 


        Cookies 里有信息标识了我们所对应的服务器 的会话,每次浏览器在请求该站点的页面时,都会在请求头中加上 Cookies 并将其发送给服 务器,服务器通过 Cookies 识别出是我们自己,并且查出当前状态是登录状态,所以返回结果就是登录之后才能看到的网页内容。


        Referer:此内容用来标识这个请求是从哪个页面发过来的,服务器可以拿到这一信息并做相 应的处理,如做来源统计、防盗链处理等。 


        User-Agent:简称 UA,它是一个特殊的字符串头,可以使服务器识别客户使用的操作系统 及版本、 浏览器及版本等信息。


        Content-Type:也叫互联网媒体类型( Internet Media Type )或者 MIME 类型,在 HTTP 协议 消息头中,它用来表示具体请求中的媒体类型信息。


        响应,由服务端返回给客户端,可以分为三部分:响应状态码( Response Status Code )、响应头 ( Response Headers )和响应体( Response Body )。


        响应头包含了服务器对请求的应答信息,如 Content-Type、 Server、 Set-Cookie 等。



        Date:标识响应产生的时间。 


        Last-Modified :指定资源的最后修改时间。 


        Content-Encoding :指定响应内容的编码。


        Server:包含服务器的信息 ,比如名称、版本号等。 


        Content-Type:文档类型,指定返回的数据类型是什么 ,如 text/html 代表返回 HTML 文档 。


        Set-Cookie :设置 Cookies。响应头中的 Set-Cookie 告诉浏览器需要将此内容放在 Cookies 中 , 下次请求携带 Cookies 请求。 


        Expires:指定响应的过期时间 , 可以使代理服务器或浏览器将加载的内容更新到缓存中。如果再次访问时,就可以直接从缓存中加载 ,降低服务器负载,缩短加载时间。


        好啦,HTTP基本原理以及请求与响应就介绍到这吧,此篇文章纯干,请妥善收藏。








我心有山海,眼有星辰

Swpan努力向上爬的小白




图片来源|网络


-END-



以上是关于聊聊HTTP的那些事,以及在它背后的“勾当”的主要内容,如果未能解决你的问题,请参考以下文章

聊聊CSRF那些事

合宙Luat | 看《射雕英雄传》,聊聊LuaTask延时那些事

由浅入深,聊聊 LeakCanary 的那些事

深入理解 WKWebView(基础篇)—— 聊聊 cookie 管理那些事

聊聊Block的内存管理那些事

聊聊测试管理的那些事之管事篇