http协议和请求响应

HTTP协议

a.     http协议:

规定了客户端和服务端交流时的数据格式


HTTP1.0:

运行方式:一个连接发送一个请求

基于HTTP协议的客户/服务器模式的信息交换过程,如图所示,它分四个过程,建立连接、发送请求信息、发送响应信息、关闭连接。

l浏览器与WEB服务器的连接过程是短暂的,每次连接只处理一个请求和响应。对每一个页面的访问,浏览器与WEB服务器都要建立一次单独的连接。
l浏览器到WEB服务器之间的所有通讯都是完全独立分开的请求和响应。
l无状态
http协议和请求响应_第1张图片


HTTP1.1:一个连接发送多个请求

Ø在一个TCP连接上可以传送多个HTTP请求和响应。
Ø多个请求和响应过程可以重叠
Ø增加了更多的请求头和响应头,比如HostIf-Unmodified-Since请求头等
http协议和请求响应_第2张图片


在地址栏中输入网址,客户端的数据发送到服务器,由浏览器组织格式,把内容发送到服务器
服务端发送到客户端的数据,由Tomcat服务器组织好格式,发送回客户端


b.     特点:

http协议和请求响应_第3张图片

1.请求和响应都由三部分组成(行和头的信息是浏览器组织成这种格式发送到服务端的,有服务端组织格式发送到客户端,我们只写了正文里的东西)

请求信息(3部分组成): (可以理解为就是想向服务器发送这些东西)(服务器可以解析,然后提取东西给浏览器响应)

1)请求行 (由3部分组成)

a) 请求的方式:常见的是get和post方式

lGET方式
如请求方式为GET方式,则可以在请求的URL地址后以?的形式带上交给服务器的数据,多个数据之间以&进行分隔,例如:
GET /mail/1.html?name=abc&password=xyz HTTP/1.1
GET方式的特点:在URL地址后附带的参数是有限制的,其数据容量通常不能超过1K
lPOST方式
如请求方式为POST方式,则可以在请求的正文内容中向服务器发送数据,Post方式的特点:传送的数据量无限制。

b) 请求的资源地址:app/a.html

c) 请求协议:http1.1

2)请求头信息(2部分组成)(键值对)

a)头名称:一般首字母大写

 b)头值:

3)请求正文 (只有请求的类型是post才会有) (请求参数):把客户端所填写的请求的信息提交给服务端(服务端通过请求对象拿取信息)

 响应信息:(3部分组成)(服务器回回来的东西)(控制头控制浏览器的怎么做)

1)响应行(由3部分组成)

a)     响应协议

b)     状态码

l状态码用于表示服务器对请求的各种不同处理结果和状态,它是一个三位的十进制数。响应状态码分为5类,使用最高位为1到5来进行分类如下所示:
http协议和请求响应_第4张图片

c)     状态信息

2) 响应头信息(2部分):

a): 响应头

b): 头值

3) 响应正文:服务端发送给客户端的html源代码(客户端通过浏览器解析再把数据显示在页面中)

c.get和post方式区别:

1.get方式请求参数会附加在url后,而post是看不到的,post相对安全

2.get方式对提交的数据大小有限制(1k),post方式对数据大小没有限制.

d. 响应的状态码:

 200:服务端对客户端正常响应 

表示一切正常,返回的是正常请求结果

 302(307): 请求重定向  

指出被请求的文档已被临时移动到别处,此文档的新的URLLocation响应头中给出

304: 未修改  (页面在服务器没有修改过)

表示客户机缓存的版本是最新的,客户机可以继续使用它,无需到服务器请求

404:找不到

服务器上不存在客户机所请求的资源。

 500:代码错误

服务器端的程序发生错误

在地址栏输入网址后:

回车:Cache 把请求提交一遍(在浏览器的缓存中取)

点击右边的刷新按钮:304 把刚才的请求再提交一遍(先去到服务器,服务器判断该页面有没有修改,如果没有,再通知客户端从浏览器的缓存中取)

键盘ctrl+F5:200 一定要去到服务器取,不管有没有缓存,服务器再发送一遍数据到客户端

e.请求头信息:

 * Accept: 浏览器告诉服务端, 浏览器可接受的MIME类型

MIME类型:相当于操作系统下的文件类型。

是由大类型和小类型组成: text/html;

对应的关系在conf/web.xml中查询

Accept-Charset: 浏览器告诉服务端, 浏览器支持哪种字符集

Accept-Encoding: 浏览器告诉服务端, 浏览器能够进行解码的数据编码方式,比如gzip

Accept-Language: 浏览器告诉服务端,浏览器支持的语言种类

Host: 浏览器告诉服务端,浏览器所在的主机

* Referer: 浏览器告诉服务端,当前页面从哪里来的。就是上一个页面

 用处:

 1. 用来记录广告的信息 

http协议和请求响应_第5张图片

  2. 防盗链

http协议和请求响应_第6张图片

Content-Type: 浏览器告诉服务端 ,内容类型   If-Modified-Since: 浏览器告诉服务端

Content-Length: 浏览器告诉服务端请求正文内容长度

Connection: 浏览器告诉服务端

****Cookie: 浏览器告诉服务端 ,浏览器携带的Cookie

Date: 浏览器告诉服务端,发送请求的时间

 

f. 响应头信息

* Location : 服务端用来告诉浏览器,请求需要重定向.(必须结合状态吗302使用)

Server : 服务端用来告诉浏览器,服务器的类型

* Content-Encoding: 服务端用来告诉浏览器,服务器对数据采用的编码(主要是指压缩的格式)

Content-Length:  服务端用来告诉浏览器,响应正文的长度

Content-Language: 服务端用来告诉浏览器,zh-cn服务发送的文本的语言

*Content-Type: 服务端用来告诉浏览器,你要用哪个码表来解析二进制数据

* Last-Modified : 服务端用来告诉浏览器,访问资源的最后修改时间

 *Refresh:服务端用来告诉浏览器,多长时间刷新一次

*Content-Disposition: 服务端用来告诉浏览器,以下载文件的方式打开文件

 * Expires: -1 : 服务端用来告诉浏览器,不要缓存 Cache-Control:no-cache (1.1)   Pragma: no-cache   (1.0)

 ***** Set-Cookie: 服务端用来告诉浏览器,要存储的内容

你可能感兴趣的:(JavaWeb)