http协议学习

一、什么是http协议

协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。它可以使浏览器更加高效,使网络传输减少,不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等,是一个应用层协议,由请求和响应构成。

二、HTTP协议的主要特点

1、 支持客户/服务器模式。

2、 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。

3、 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

4、无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

5、无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

三、HTTP协议的工作流程
一次HTTP操作称为一个事物,HTTP协议工作原理分为四步:建立连接、发送请求信息、发送响应信息、关闭连接

1、 首先客户机与服务器需要建立连接,只要单击某个超级连接,HTTP的工作就开始了;

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

3、 服务器接到请求后,给予相应的响应信息,格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容;

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

四、HTTP协议—url

URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息,一般形式是http://<主机>:<端口>/<路径>,http表示要通过HTTP协议来定位网络资源,<主机>表示合法的Internet主机域名或者IP地址;<端口>指定一个端口号,为空则使用缺省端口80;<路径>指定请求资源的URI;如果URL中没有给出<路径>,那么当它作为请求URI时,必须以“/”的形式给出,通常这个工作浏览器自动帮我们完成。

eg:

1、输入:www.360buy.com浏览器自动转换成:http://www.360buy.com/

2、http:127.0.0.1:8080/index.jsp

五、HTTP协议—请求(request)

当浏览器向Web服务器发出请求时,它向服务器传递了一个数据块,也就是请求信息,HTTP请求信息由3部分组成:

1、请求行(请求方式 资源路径 HTTP版本号)

根据HTTP标准,HTTP请求可以使用多种请求方法。HTTP1.1支持7种请求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TARCE。在Internet应用中,最常用的方法是GET和POST。

GET和POST方法的区别:GET一般用于获取/查询资源信息,而POST一般用于更新资源信息

1)、GET方法是默认的HTTP请求方法,我们日常用GET方法来提交表单数据,然而用GET方法提交的表单数据只经过了简单的编码,同时它将作为URL的一部分向Web服务器发送,因此,如果使用GET方法来提交表单数据就存在着安全隐患上。例如

Http://127.0.0.1/login.jsp?Name=test&id=123456

从上面的URL请求中,很容易就可以辩认出表单提交的内容。(?之后的内容)另外由于GET方法提交的数据是作为URL请求的一部分所以提交的数据量不能太大;

2)、POST方法是GET方法的一个替代方法,它主要是向Web服务器提交表单数据,尤其是大批量的数据。POST方法克服了GET方法的一些缺点。通过POST方法提交表单数据时,数据不是作为URL请求的一部分而是作为标准数据传送给Web服务器,这就克服了GET方法中的信息无法保密和数据量太小的缺点。因此,出于安全的考虑以及对用户隐私的尊重,通常表单提交时采用POST方法。

2、请求头(Request Header)

请求头包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度等。

Accept: 用于告诉服务器,客户机所支持的数据类型

Accept-Charset: 用于告诉服务器,客户机所采用的码表

Accept-Encoding: 用于告诉服务器,客户机所支持的数据压缩格式

Accept-Language: 用于告诉服务器,客户机的语法环境

Host: 用于告诉服务器,客户机想访问服务器哪台主机

If-Modified-Since: 用于告诉服务器,客户机对于资源的最后缓存时间

Referer: 用于告诉服务器,客户机是从哪个页面去访问服务器的  (防盗链)

User-Agent: 用于告诉服务器,客户机的机器环境(例如所使用的操作系统,浏览器版本号)

Cookie:客户端通过这个头字段,可以带一些数据给服务器

Connection:客户端通过这个头字段告诉服务器,请求完成后,是保持链接还是关闭链接

3、消息体(请求正文)

请求头和请求正文之间是一个空行,它表示请求头已经结束,接下来的是请求正文。请求正文中可以包含客户提交的查询字符串信息。

六、HTTP协议—响应(response)

HTTP响应与HTTP请求相似,HTTP响应也由3个部分构成,分别是:

1、响应行(协议状态版本代码描述)

协议状态代码描述HTTP响应的第一行类似于HTTP请求的第一行,它表示通信所用的协议是HTTP1.1服务器已经处理了客户端发出的请求。

2、响应头(Response Header)

响应头(Response Header)也和请求头一样包含许多有用的信息,例如服务器类型、日期时间、内容类型和长度等。

Location:这个头通常配合302状态码使用,服务器使用这个头告诉浏览器去找谁

Server:服务器通过这个头告诉浏览器,服务器的类型

Content-Encoding: 服务器通过这个头告诉浏览器,数据的压缩格式(gzip)

Content-Length:服务器通过这个头告诉浏览器,回送数据的长度

Content-Language: 内容的语言类型,例如:zh-cn

Content-Type: 服务器通过这个头告诉浏览器,回送数据的类型

Last-Modified: 服务器通过这个头告诉浏览器,数据的最后修改时间

Refresh:服务器通过这个头告诉浏览器,多长时间定时刷新

Content-Disposition: 控制浏览器以下载方式打开回送的数据

Transfer-Encoding: 服务器通过这个头告诉浏览器,数据是以块方式回送的

Expires:控制浏览器缓存数据的时间(-1或0,代表控制浏览器不要缓存)

Cache-Control: no-cache

Pragma: no-cache  以上三个头一起用,就可以控制所有的浏览器不要缓存数据

3、消息体(响应正文)

响应正文就是服务器返回的HTML页面,响应头和正文之间也必须用空行分隔。

*响应状态码:HTTP状态码反映了Web服务器处理HTTP请求状态。HTTP状态码由3位数字构成,其中首位数字定义了状态码的类型:

1XX-信息类(Information),表示收到Web浏览器请求,正在进一步的处理中

2XX-成功类(Successful),表示用户请求被正确接收,理解和处理例如:200 OK

3XX-重定向类(Redirection),表示请求没有成功,客户必须采取进一步的动作。

4XX-客户端错误(Client Error),表示客户端提交的请求有错误 例如:404 NOTFound,意味着请求中所引用的文档不存在。

5XX-服务器错误(Server Error)表示服务器不能完成对请求的处理:如 500

  

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。