「图文并茂」写一篇通俗易懂的 H TTP(上)

·  阅读 331

这是我参与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 是请求数据所用的方法,比较常用的有 GETPOSTGET是从服务器获取数据,不会改变服务器的数据,因此可以对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-Alive
  • Authorization:和授权相关
  • Cache-Control:是否对数据进行缓存
  • Cookie :用于记录客户端的状态信息

四、无状态的协议和Cookie

HTTP 协议是无状态的协议,意思就是它不存储任何通信双方的信息。但是在某些情况下,需要对客户端的一些数据进行记录,例如某些场景下需要记录用户的登陆状态。这就需要使用 Cookie,它是服务器用来在客户端保存一些数据。

没有图文并茂,仅仅是疑问简短的知识点的归纳。关于图,我们下一篇见!

另外,由于水平有限,有错误的地方在所难免,未免误导他人,欢迎大佬指正!码字不易,感谢大家的点赞关注!🙏

分类:
前端
标签:
分类:
前端
标签:
收藏成功!
已添加到「」, 点击更改