HTTP协议
1.HTTP协议概述
- 定义与作用
HTTP是超文本传输协议,用于定义服务端和客户端之间交换数据的过程和数据本身的的格式,同时HTTP是一种请求/响应式的协议,是一种应用层的协议
- 优点
支持客户端和服务器模式
简单快速,通过Http请求和Http响应加快通信
允许传输任意类型的数据,由Context-Type加以标记
无状态。HTTP协议处理事务是没有记忆能力的
- HTTP的版本
**HTTP1.0:**建立连接,发送请求信息,响应信息,关闭连接(每次只能处理一个请求)
**HTTP1.1:**它支持持久连接,也就是说在一个TCP连接上可以传送多个HTTP请求和响应,并且在发送下个请求时,无需等待上次请求的返回结果,服务器会按照客户端发送的请求先后顺序依次返回响应结果
2.HTTP请求消息
- **组成:**请求消息包括请求行,请求头和请求消息体
- 请求行:GET /index.html HTTP/1.1
1.组成:请求方式,资源路径(绝对路径/相对路径),HTTP版本
2.常见请求方式
GET:
GET请求获取请求行的URI所标识的资源
GET传送的数据量有限,不超过2KB;
GET的请求参数会在资源路径后面添加 ?参数=值&参数=值... 来表示,会在请求行显示
POST:
POST请求向指定资源提交数据,请求服务器进行处理(如提交表单或者上传文件)
POST请求的请求参数会放在请求消息体中,通过Content-Type指定类型,默认为application/x-www-form-urlencoded,Content-Length字段指定实体的长度
POST请求传输数据没有大小限制
- 请求头:
1.Accept:用于指定客户端可以处理的类型
Accept: text/html,表明客户端希望接受HTML文本。
Accept: image/gif,表明客户端希望接受GIF图像格式的资源。
Accept: image/*,表明客户端可以接受所有image格式的子类型。
Accept: */*,表明客户端可以接受所有格式的内容。
2.Accept-Encoding:用于指定客户端可以解码的类型(实体内容压缩方式)
Accept-Encoding: gzip,compress
//与响应头中的Content-Type相对应
3.Host(HTTP1.1必须有):指定主机名和端口号
Host:主机名:端口号
4.If-Modified-Since
If-Modified-Since的值为GMT格式的时间。
If-Modified-Since请求头被视作一个请求条件,只有服务器中文档的修改时间比If-Modified-Since请求头指定的时间新,服务器才会返回文档内容。否则,服务器将返回一个304(Not Modified)状态码来表示浏览器缓存的文档是最新的,而不向浏览器返回文档内容,这时,浏览器仍然使用以前缓存的文档。
5.Referer
当单击这个超链接向服务器发送GET请求时,浏览器会在发送的请求消息中包含Referer头字段,Referer头字段常被网站管理人员用来追踪网站的访问者是如何导航进入网站的。同时Referer头字段还可以用于网站的防盗链。
//使用URL访问时不会产生Referer字段,点击超链接时候会产生
3.HTTP响应消息
-
**组成:**响应状态行,HTTP响应头,实体内容
-
HTTP响应状态行:HTTP/1.1 200 OK
1.组成:协议版本号,状态码,状态码描述信息
2.常见状态码
状态码 | 说明 |
---|---|
200 | 表示服务器成功处理了客户端的请求。客户端的请求成功,响应消息返回正常的请求结果 |
302 | 表示请求的资源临时从不同的URI响应请求,但请求者应继续使用原有位置来进行以后的请求。例如,在请求重定向中,临时URI应该是响应的Location头字段所指向的资源 (当前消息处理不了需要通过Location中的资源处理) |
304 | 如果客户端有缓存的文档,它会在发送的请求消息中附加一个If-Modified-Since请求头,表示只有请求的文档在If-Modified-Since指定的时间之后发生过更改,服务器才需要返回新文档。状态码304表示客户端缓存的版本是最新的,客户端应该继续使用它。否则,服务器将使用状态码200返回所请求的文档 |
404 | 表示服务器找不到请求的资源。 |
500 | 表示服务器发生错误,无法处理客户端的请求。 |
- HTTP响应头
1.Location
Location头字段用于通知客户端获取请求文档的新地址,其值为一个使用绝对路径的URL地址。
Location头字段和大多数3xx状态码配合使用,以便通知客户端自动重新连接到新的地址请求文
HTTP消息头中不能同时出现Location和Content-Type这两个头字段。
2.Server
Server头字段用于指定服务器软件产品的名称
3.Refresh: Refresh:3;url=http://www.baidu.com
Refresh头字段用于告诉浏览器自动刷新页面的时间,它的值是一个以秒为单位的时间数
在Refresh头字段的时间值后面还可以增加一个URL参数,时间值与URL之间用分号(;)分隔,用于告诉浏览器在指定的时间值后跳转到其他网页。
4.Content-Disposition
Content-Disposition指定了接收程序处理数据内容的方式,有inline和attachment两种标准方式,inline表示直接处理,而attachment则要求用户干预并控制接收程序处理数据内容的方式。
而在HTTP应用中,只有attachment是Content-Disposition的标准方式。attachment后面还可以指定filename参数。filename参数值是服务器建议浏览器保存实体内容的文件名称。
在设置Content-Disposition之前,一定要设置Content-Type头字段
5.Content-Encoding:指定响应的压缩格式
Content-Encoding:gizp,compress
6.Content-Type:返回响应的浏览器可识别格式和编码方式
Content-Type:“text/html;charset=utf-8”
标签:协议,HTTP,请求,Content,响应,服务器,Javaweb01,客户端
From: https://blog.csdn.net/XYX_888/article/details/139560239