这是我参与8月更文挑战的第3天,活动详情查看: 8月更文挑战
借 8 月更文挑战督促自己,感谢掘金!
基本概念和简单入门
关于 Http,先来看维基百科的定义:
超文本传输协议(英语:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议[1]。HTTP是万维网的数据通信的基础。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。通过HTTP或者HTTPS协议请求的资源由统一资源标识符(Uniform Resource Identifiers,URI)来标识。
我从上面的描述中找到了两个重点:
- 是一种作用于应用层的通信协议。
- 需要用 URI 来进行标识。
关于网络基础相关的知识,大家可以看看我这篇文章,讲的知识还是比较细的。Http是应用层的协议是数据传输的规范,什么是 URI 呢?URI 是统一资源标识符,注意需要和 URL(统一资源定位符)区分开来,URL 是 URI 的子集。
HTTP 的基础知识
一、请求报文和响应报文
客户端向服务器发起请求的时候,有一个请求报文,服务器得到结果之后会把响应报文发送给客户端。
请求报文的格式如下:
Method Path HttpVersion
key : value
......
Method 是请求数据所用的方法,比较常用的有 GET 和POST。GET是从服务器获取数据,不会改变服务器的数据,因此可以对GET请求的数据进行缓存。POST 的话是向服务器提交数据,会改变服务器的数据,提交的数据通常存放在Body里,而不是在 URL 中,因此相对来说更加安全。
响应报文的格式如下:
HttpVersion responseCode responseMessage
key : value
响应报文如下:
HTTP/1.1 200 OK
Date: Sun, 10 Oct 2010 23:26:07 GMT
Server: Apache/2.2.8 (Ubuntu) mod_ssl/2.2.8 OpenSSL/0.9.8g
Last-Modified: Sun, 26 Sep 2010 22:04:35 GMT
ETag: "45b6-834-49130cc1182c0"
Accept-Ranges: bytes
Content-Length: 13
Connection: close
Content-Type: text/html
二、响应码
响应码是在经过服务器的处理后,把处理的结果告诉客户端。常见的响应码有以下几种类型:
(1)、1xx
这一类响应代表请求已经结束,但是还需要继续处理。通常是临时的响应,只包含状态行和某些可选的响应头信息。
(2)、2xx
代表请求已经被服务器接收、理解,常见的响应码。例如常见的200代表请求成功。
(3)、3xx
这一类响应表示需要客户端采取进一步的操作才能完成请求,例如301表示被请求的资源已经移动了位置,需要进行重定向。
(4)、4xx
这类状态码代表客户端的错误,例如常见的404表示请求资源没有在服务器上找到,广泛用于服务器不想揭示请求为何被拒绝
(5)、5xx
这一类的状态码表示服务器的错误,错误出现的原因并不是由于客户端的问题,而是由于服务的出现的异常情况,导致服务器对来自客户端的请求无法完成。
三、Header
Header 表示请求报文或者响应报文中的头部字段,比较常见的Header字段如下:
Host:代表请求主机的域名Content-Type:数据的类型Content-Length:数据的长度Connection:数据传输结束之后,这条链接的是否会被关闭,默认情况下是 Keep-AliveAuthorization:和授权相关Cache-Control:是否对数据进行缓存Cookie:用于记录客户端的状态信息
四、无状态的协议和Cookie
HTTP 协议是无状态的协议,意思就是它不存储任何通信双方的信息。但是在某些情况下,需要对客户端的一些数据进行记录,例如某些场景下需要记录用户的登陆状态。这就需要使用 Cookie,它是服务器用来在客户端保存一些数据。
没有图文并茂,仅仅是疑问简短的知识点的归纳。关于图,我们下一篇见!
另外,由于水平有限,有错误的地方在所难免,未免误导他人,欢迎大佬指正!码字不易,感谢大家的点赞关注!🙏