http协议

    xiaoxiao2021-03-25  47

    1. 什么是http 协议:

    客户端连上web 服务器后,若想获得web 服务器中的某个web资源,需遵守一定的通讯格式,HTTP 协议用于定义客户端与 WEB服务器通讯的格式。它是TCP/IP协议的一个应用层(工作在TCP/IP)协议。(w3c) 用于定义WEB浏览器与WEB服务器之间交换数据的过程。

    2. HTTP协议的版本:HTTP/1.0  HTTP/1.1 

    他们的区别:

    1.0  每访问一次都创建一次连接。

    1.1  创建一次连接可以有多次请求。

    ·在HTTP1.0协议中,客户端与web服务器建立连接后,只能获得一个web资源

    ·HTTP1.1协议,允许客户端与web服务器建立连接后,在一个连接上获取多个web资源

    面试题:

    一个web页面中,使用img标签引用了三幅图片,当客户端访问服务器中的这个web页面时,客户端总共会访问几次服务器,即向服务器发送了几次HTTP请求?

    答:四次:

    第一次,获取html 页面源码;

    后三次,浏览器解析源码,向服务器发送三次请求。

    WEB应用设计原则:

    尽量减少,客户端向服务器发送请求的次数,减少服务器的压力。

    HTTP : 协议请求:

    客户端连上服务器后,向服务器请求某个WEB资源,称之为客户端向服务器发送了一个HTTP请求,一个完整的HTTP请求包括如下内容:

    一个请求行,若干请求头, 以及实体内容。

    GET  /books/Java.html  HTTP/1.1 ——请求行——用于描述客户端的请求方式,请求的资源名称,以及使用的HTTP 协议版本号。

    Accept: */* 

    Accept-Language: en-us

    Connection: Keep-Alive

    Host : localhost

    Refererhttp// localhost/links.asp

    User-Agent: Mozilla/4.0

    Accept-Encoding : gzip , deflate 

    多个请求头:请求头用于描述客户端请求哪台主机,以及客户端的一些环境信息等。

    一个空行

    请求行:

    请求行中的GET称之为请求方式,请求方式有:

    POST   GET   HEAD   OPTIONS   DELETE  TRACE  PUT 

    常用的有:GET  POST

    用户如没有设置,默认情况下浏览器向服务器发送的都是get请求,例如在浏览器直接输入地址访问,点超链接访问等都是get , 用户如想把请求方式该为post,可通过更改表单的提交方式实现。

    ·如请求方式为GET方式,则可以在请求的URL地址后以?的形式带上交给服务器的数据,多个数据之间以&进行分隔,例如:

    GET  /mail/1.html?name=abc&password=xyz    HTTP/1.1

    GET方式的特点:由于附在url地址后面,数据大小不能超过1K

    ·如请求方式为POST方式,则可以在请求的实体内容中向服务器发送数据,例如:

    POST /servlet/ParamsServlet HTTP/1.1

    Host:

    Content-Type: application/x-www-form-urlencoded

    Content-Length: 28

    name=abc&password=xyz

            Post方式的特点:传送的数据量无限制。

    HTTP 请求头的细节——消息头:

    用于HTTP请求中的常用消息头

    Accept: text/html,image/*    

    Accept-Charset: ISO-8859-1

    Accept-Encoding: gzip,compress

    Accept-Language: en-us,zh-cn 

    Host: www.it315.org:80

    If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT

    Referer: http://www.it315.org/index.jsp

    User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)

    Cookie

    Connection: close/Keep-Alive   

    Date: Tue, 11 Jul 2000 18:23:51 GMT

     

    第一行:客户机告诉服务器 自己支持的类型。

     如果是:Accept*/*  我什么都支持。

    第二行:Accept-Charset: ISO-8859-1

       用于告诉服务器,客户机采用的编码。

    第三行:Accept-Encoding: gzip,compress

      用于告诉服务器,客户机支持的压缩格式。

    第四行:Accept-Language: en-us,zh-cn 

    客户机的语言环境。

    第五行:Host: www.nihao.org:80

    客户机通过这个头告诉服务器,想访问的主机名。 

    第六行:If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT

    客户机通过这个头告诉服务器,资源的缓存时间

    第七行:Referer: http://www.nihao.org/index.jsp (防盗链)

    告诉服务器,从哪个资源访问服务器。

    第八行:User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)

    告诉服务器,自己的软件环境

    第九行:Cookie

    客户机通过这个头可以向服务器带数据

    第十行:Connection: close/Keep-Alive 

    请求完后是否保持连接。

    第十一行:Date: Tue, 11 Jul 2000 18:23:51 GMT

    HTTP 响应:

    一个HTTP响应代表服务器向客户端回送的数据,包括:

    一个状态行,若干消息头,以及实体内容。

    服务器向浏览器回送数据时,会通过响应消息头通知浏览器 进行何种操作。

    HTTP请求中的常用响应头

    1. Location: http://www.nihao.org/index.jsp 

    a) 这个头配合302状态码使用,用于告诉客户找谁

    2. Server:apache tomcat 

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

    3. Content-Encoding: gzip 

    a) 服务器通过这个头,告诉浏览器数据的压缩格式

    如何是实现数据的压缩:

    4 Content-Length: 80

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

    5. Content-Language: zh-cn 

    a) 回送语言环境

    6. Content-Type: text/html; charset=GB2312 

    a) 服务器通过这个头,告诉浏览器回送数据类型

    7. Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT

    a) 服务器通过这个头,告诉浏览器当前资源缓存时间

    8. Refresh: 1;url=http://www.it315.org

    a) 服务器通过这个头,告诉浏览器隔多长时间刷新一次

    9 Content-Disposition: attachment; filename=aaa.zip

    服务器通过这个头,以下载方式打开这个头

    10  Set-Cookie:SS=Q0=5Lb_nQ; path=/search

    11 Transfer-Encoding : 服务器通过这个头,告诉浏览器数据传送格式。

    12  ETag : 缓存相关的头 ,可以做到实时更新!

    13 Expires: -1//3种禁止缓存的头字段

    控制浏览器数据的缓存多长时间  -1不缓存,

    14 Cache-Control: no-cache  

    Pragma: no-cache   

    服务器通过这两个头,控制浏览器不要缓存

    【禁用浏览器缓存(考虑不同浏览器兼容性,存在三个字段)】

      Expires: -1     Cache-Control: no-cache     Pragma: no-cache   

    Connection: close/Keep-Alive   

    Date: Tue, 11 Jul 2000 18:23:51 GMT

    404 ——请求的资源在服务器中没有

    403—— 没有权限,服务器有资源,拒绝访问

    302—— 请你去找别人

    304  307 —— 请你去拿缓存

    500 —— 服务器出问题

    HTTP 请求字段:

    ·Range 头指示服务器只传输一部分Web资源。这个头可以用来实现断点续传功能。Range 字段可以通过三种格式 设置要传输的字节范围:

    ·Range : bytes = 1000 - 2000

       传输范围从1000 到 2000 字节。

    Range : bytes = 1000- 

    传输Web资源中第1000个字节以后的所有内容

    Range  bytes = 1000 传输最后1000 个字节

    转自:http://blog.csdn.net/cxx00/article/details/60467230

    转载请注明原文地址: https://ju.6miu.com/read-87297.html

    最新回复(0)