Java Web程序设计——HTTP协议
同理,放上思维导图
HTTP概述
HTTP介绍
- HTTP是HyperText Transfer Protocol的缩写,即超文本传输协议。简单来说就是规范了浏览器和服务器交互或通信的规则。
- 客户端与服务器在HTTP协议下的交互过程
HTTP协议的特点
- 支持客户端(浏览器就是一种客户端)或服务器模式
- 客户端向服务器请求时,只需传送请求方式和路径
- HTTP允许传输任意类型的数据,正在传输的数据类型由Content-Type加以标记
- HTTP是无状态协议。无状态是指协议对于事务处理没有记忆能力
HTTP 1.0和HTTP 1.1
- HTTP 1.0通信基制,每次从浏览器向服务器发送请求,都需要建立一个新的TCP连接
- HTTP 1.1建立一个TCP连接,可以发送多个请求,服务器在做出多个响应后,最后关闭这个TCP连接
HTTP消息
- HTTP请求消息和HTTP响应消息统称为HTTP消息
HTTP请求消息
- 请求行:
GET /index.html HTTP/1.1
位于请求消息的第一行
包括请求方式GET,资源路径index.html,HTTP/1.1协议版本
以下是一些请求方式:
- GET:请求获取请求行的URI所标识的资源
- POST:想指定资源提交数据,请求服务器进行处理,比如,提交表单或上传文件
- HEAD:请求获取由URI所标识资源的响应消息头
- PUT:将网页放置到指定URI位置
- DELETE:请求服务器删除URI所标识的资源
- TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断
- CONNECT:保留将来使用
- OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求
注:1.最常用的是GET和POST方式
2.GET请求没有请求正文,请求数据在浏览器的地址栏
3.POST请求有请求正文,请求数据在请求正文里面
- 请求消息头
请求行之后便是消息头,主要用于向服务器传递附加消息
例如:(图片随便粘的)
- 每个请求消息头都是由一个头字段名称和一个值构成
- 头字段名称和值之间用冒号(:)和空格( )分隔
- 每个请求消息头之后使用一个回车换行符标志结束
以下是一些常见请求头字段:
- Accept
- Accept-Charset
- Accept-Encoding
- Accept-Language
- Authorization
- Proxy-Authorization
- Host:请求资源主机的ip地址和端口号
- If-Match
- If-Modified-Since
- Range
- If-Range
- Max-Forward
- Referer:请求时从什么地方发起的(放置盗链)
- User-Agent:浏览器的版本、类型及内核
ps:以上就不具体举例,详情请自行百度
HTTP响应消息
- HTTP响应状态行
- HTTP响应状态行位于响应消息的第一行,代码:
HTTP/1.1 200 OK
HTTP 1.1:是通信使用的协议版本(200是状态码)
OK:表示状态描述,说明请求成功
以下详细说下HTTP中的状态码:
- 1xx:表示请求已接收,需要继续处理
- 2xx:表示请求已成功被服务器接收、理解、并接受
- 3xx:为完成请求,客户端需进一步细化请求
- 4xx:客户端的请求有错误
- 5xx:服务器端出现错误
ps:以上无需记忆,以下来说常见的几个状态码:
- 200:表示服务器成功处理了客户端的请求
- 302:表示请求的资源临时从不同的URI响应请求。
- 404:表示服务器找不到请求的资源
- 500:表示服务器发生错误,无法处理客户端的请求
- HTTP响应消息头
状态行完了就是若干响应消息头,服务器通过响应消息头向客户端传递附加信息
例如:(同上图片随便粘的)
从上不难看出它们的格式和HTTP请求消息头的格式相同
以下是HTTP中常用的响应消息头字段:
- Accept-Range
- Age:缓冲的有效时间
- Content-Disposition
- Refresh:浏览器自动刷新时间
- Etag
- Location:获取请求文档的新地址
- Retry-After
- Server:指定服务器软件产品名称
- Proxy-Authenticate
- Vary
- WWW-Authenticate
ps:同上,详情请自行百度