http协议和请求响应

一、HTTP协议

1.http协议:

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

①HTTP1.0:

  • 运行方式:一个连接发送一个请求
  • 基于HTTP协议的客户/服务器模式的信息交换过程,如图所示,它分四个过程,建立连接、发送请求信息、发送响应信息、关闭连接。
  • 浏览器与WEB服务器的连接过程是短暂的,每次连接只处理一个请求和响应。对每一个页面的访问,浏览器与WEB服务器都要建立一次单独的连接。
  • 浏览器到WEB服务器之间的所有通讯都是完全独立分开的请求和响应。
  • 无状态

 

 

②HTTP1.1:

  • 一个连接发送多个请求
  • 在一个TCP连接上可以传送多个HTTP请求和响应。
  • 多个请求和响应过程可以重叠
  • 增加了更多的请求头和响应头,比如Host、If-Unmodified-Since请求头等

 

 

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

服务端发送到客户端的数据,由Tomcat服务器组织好格式,发送回客户端

 

2.特点:

①请求信息(由四部分组成)

(行和头的信息是浏览器组织成这种格式发送到服务端的,有服务端组织格式发送到客户端,我们只写了正文里的东西)

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

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

POST /login.html	HTTP/1.1

1.请求的方式:

常见的是get和post方式

  • GET方式:参数在请求行中,跟在url后面

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

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

GET方式的特点:在URL地址后附带的参数是有限制的,其数据容量通常不能超过1K。

  • POST方式:参数在请求体中

如请求方式为POST方式,则可以在请求的正文内容中向服务器发送数据,Post方式的特点:传送的数据量无限制。

2.请求的资源地址:

/login.html

3.请求协议:

http1.1

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

1.头名称:一般首字母大写

2.头值:

Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://localhost/login.html
Connection: keep-alive
Upgrade-Insecure-Requests: 1

 

<3>请求空行

一个空行,分隔请求头和请求体

<4>请求体(请求正文) (只有请求的类型是post才会有) (请求参数):

把客户端所填写的请求的信息提交给服务端(服务端通过请求对象拿取信息)

 

②响应信息:(由三部分组成)

(服务器回回来的东西)(控制头控制浏览器的怎么做)

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

a)     响应协议

b)     状态码

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

c)     状态信息

<2>.响应头信息(2部分):

a): 响应头

b): 头值

<3>.响应正文:

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

 

3.get和post方式区别:

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

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

4. 响应的状态码:

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

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

302(307): 请求重定向  

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

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

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

404:找不到

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

500:代码错误

•服务器端的程序发生错误

在地址栏输入网址后:

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

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

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

二、请求头和响应头

1.请求头信息:

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

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

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

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

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

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

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

User-Agent:浏览器告诉服务器,我访问你使用的浏览器版本信息,可以在服务器端获取该头信息,解决浏览器的兼容性问题。

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

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

用处:

 1. 用来记录广告的信息 

投放广告到不同的平台,当用户点击链接时,可以获得该链接的来源,从而统计出哪个平台最吸引用户,将广告投放到该平台

 

2. 防盗链

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

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

Connection: 浏览器告诉服务端该链接是否存活,是否可被复用

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

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

 

2. 响应头信息

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: 服务端用来告诉浏览器,要存储的内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值