Web前端基础【4】--HTTP标准

时间:2022-05-07
本文章向大家介绍Web前端基础【4】--HTTP标准,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

HTTP协议(超文本传输协议),是用于从www服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,减少网络传输。

一:HTTP请求过程 HTTP协议采取的是请求响应模型:即客户端发起请求,服务器端回送。HTTP协议是一个无状态的协议,同一个客户端的这次请求与上次请求没有对应关系。

一次HTTP操作称为一个事务,其执行过程可分为四步,如下图:

1:首先客户端与服务器端需要建立连接,例如单击某个超链接。

2:建立连接后,客户端发送一个请求给服务器,请求方式的格式:统一资源标识符(url)、协议版本号、后边是MIME信息,包括请求修饰符、客户机信息和可能的内容。

3:服务器接到请求后,给予相应的响应信息,其格式为一个状态码,包括信息的协议版本号。一个成功或者错误的代码,后边是MIME信息。

4:客户端接到服务器所返回的信息,通过浏览器将信息显示到用户的显示屏上,然后客户端与服务器端断开连接。

二:HTTP状态码含义: HTTP状态码主要是为了标志此次HTTP请求的运行状态。下面是常见的HTTP状态吗: 1:200———请求成功。 2:301———资源(网页等)被永久转移到其他URL。 3:404———请求的资源(网页)不存在。 4:500———内部服务器错误。

HTTP状态码由三个十进制数组成,第一个十进制数定义了状态码的类型。HTTP状态码共分为五种类型,如下图:

三:HTTP头部信息: HTTP头部信息由众多的头域组成,每个头域由一个域名、冒号(:)、和域值三部分组成。

通过浏览器访问百度首页时,右键检查,在里面查看整个HTTP访问的过程,首先是浏览器发出请求,请求头的数据如下:

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8 
Accept-Encoding:gzip, deflate, br 
Accept-Language:en,zh-CN;q=0.8,zh;q=0.6 
Cache-Control:max-age=0 
Connection:keep-alive 
Cookie:BAIDUID=5B0DE8754CD9C7FD0B4606751125D30A:FG=1; BIDUPSID=5B0DE8754CD9C7FD0B4606751125D30A; PSTM=1497970650; __cfduid=df9fa56b6193a39ac162e322f7aa7a0021508679057;pgv_pvi=150157120;BDRCVFR[ird_eQEYn]=mk3SLVN4HKm;pgv_si=s9886431232;BDRCVFR[ISR1xZMpC9b]=mk3SLVN4HKm; BD_HOME=0; BD_UPN=12314553; H_PS_645EC=b833N3G6NF8lbH9RZXAkMCCKgHYIsKg3GGzIzAnQQh4vXLe1OO9RS00JdtU; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; BD_CK_SAM=1; PSINO=1; BDSVRTM=154; H_PS_PSSID=1463_24565_21111_24879 
Host:www.baidu.com 
Referer:https://www.baidu.com/ 
Upgrade-Insecure-Requests:1 
User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.9 Safari/537.36

在请求头中包含以下内容:

1:Accept请求报头域,用于指定客户端接受哪些类型的信息,例如:text/html表明客户端希望接受文本信息或者HTML网页信息。

2:Accept-Encoding:用于指定可接受的内容编码。

3:Accept-Language:用于指定一种自然语言。

4:Cache-Control:用于指定缓存指令,缓存指令是单向的,且是独立的。

5:Connection:指定连接的选项,例如:keep-alive表示连接的状态是连续的

6:Cookie:将状态保存在客户端。

7:Host:用于指定请求资源的intenet主机和端口号。

8:Referer:告诉服务器我是从哪个页面链接过来的,服务器基此可以获得一些信息用于处理。

9:Upgrade-Insecure-Requests:为1,则是告诉服务器,浏览器可以处理https协议。

10:User-Agent:包含发出请求的用户信息,其中有使用的浏览器型号、版本和操作系统的信息。

请求发送成功后,服务器进行响应,接下来看一下响应头的信息:

HTTP/1.1 200 OK
Bdpagetype:1
Bdqid:HTTP0xd831b4de00001d40
Bduserid:0
Cache-Control:private
Connection:Keep-Alive
Content-Encoding:gzip
Content-Type:text/html; charset=utf-8
Cxy_all:baidu+87abafa180337e66f63a0cfac6a710b6
Date:Wed, 08 Nov 2017 11:35:39 GMT
Expires:Wed, 08 Nov 2017 11:35:22 GMT
Server:BWS/1.1
Set-Cookie:BDSVRTM=0; path=/
Set-Cookie:BD_HOME=0; path=/
Set-Cookie:H_PS_PSSID=1463_24565_21111_24879; path=/; domain=.baidu.com
Strict-Transport-Security:max-age=172800
Transfer-Encoding:chunked
Vary:Accept-Encoding
X-Powered-By:HPHP
X-Ua-Compatible:IE=Edge,chrome=1

响应头中包含以下内容:

1:HTTP/1.1表示使用HTTP1.1协议标准,200表示请求成功。

2:Bdpagetype: 我暂时这个不知道什么意思。

3:Bdqid:暂时不知道什么意思。

4:Bduserid:暂时不知道什么意思。

5:Cache-Control:用于指定缓存指令,缓存指令是单向的,且是独立的。

6:Connection:指定连接的选项,例如:keep-alive表示连接的状态是连续的

7:Content-Encoding:被用作媒体类型的修饰符,它的值指示了已经被应用到实体正文的附加内容的编码。

8:Content-Type:用于指明发送给接收者的实体正文的媒体类型。

9:Cxy_all:暂时不知。

10:Date:表示消息产生的日期和时间。

11:Expires:给出响应过期的日期和时间。

12:Server:包含了服务器用来处理请求的软件信息。

13:Set-Cookie:setcookie() 函数向客户端发送一个 HTTP cookie。cookie 是由服务器发送到浏览器的变量。cookie 通常是服务器嵌入到用户计算机中的小文本文件。每当计算机通过浏览器请求一个页面,就会发送这个 cookie。

14:Strict-Transport-Security:它的作用是,对某些站点,当用户在浏览器输入不带协议的网址的时候,自动识别协议为https,而不是http。例如用户输入paypal.com,浏览器会自动访问https://paypal.com,而不:http://paypal.com。

15:Transfer-Encoding:chunked表示输出的内容长度不确定。

16:Vary:Accept-Encoding 响应头,明确告知缓存服务器按照 Accept-Encoding 字段的内容,分别缓存不同的版本。

17:X-Powered-By:这个值的意义用于告知网站是用何种语言或框架编写的。

18:X-Ua-Compatible:X-UA-Compatible是自从IE8新加的一个设置,对于IE8以下的浏览器是不识别的。通过设置X-UA-Compatible的值,可以指定网页的兼容性模式设置。在网页中指定的模式优先权高于服务器中(通过HTTP Header)所指定的模式。IE=edge告诉IE使用最新的引擎渲染网页,chrome=1则可以激活ChromeFrame。

四:Cookie状态管理:

cookie和session都用作来保存状态信息,都是保存客户端状态的机制,它们都是为了解决HTTP无状态的问题所作的努力。其中,cookie将状态保存在客户端,session将状态保存在服务器端。

Cookie意为“甜饼”,是由W3C组织提出,最早由Netscape社区发展的一种机制。目前Cookie已经成为标准,所有的主流浏览器如IE、Netscape、Firefox、Opera等都支持Cookie。

由于HTTP是一种无状态的协议,服务器单从网络连接上无从知道客户身份。怎么办呢?就给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了。这就是Cookie的工作原理。

Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。

Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。

如果说Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。Session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了。

五:HTTP请求方式:

如下图:

1

GET

请求指定的页面信息,并返回实体主体。

2

HEAD

类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头

3

POST

向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。

4

PUT

从客户端向服务器传送的数据取代指定的文档的内容。

5

DELETE

请求服务器删除指定的页面。

6

CONNECT

HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

7

OPTIONS

允许客户端查看服务器的性能。

8

TRACE

回显服务器收到的请求,主要用于测试或诊断。

其中常用的请求方式是GET和POST:

1:GET方式: 向特定的资源发出请求。

2:POST 方式:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。

GET和POST的区别:

1:在客户端,get方式通过url提交数据,数据在url中可以看见;post方式,数据放置在实体区提交。

2:get方式提交的数据最多只能有1024字节,而post则没有限制。

3:安全性问题,使用get的时候,参数会显示在地址栏中,而post不会。

4:get请求在访问网页是很常见,post请求则常用在登录框、提交框的位置。

每天学习一点点,每天进步一点点。