一.HTTP介绍
HTTP:超文本传输协议,是Web联网的基础
作用:从服务器传输html到本地浏览器的传输协议
版本:HTTP 0.9/1.0/1.1
特点:无状态,无连接,基于TCP
二.HTTP组成
1.请求报文:请求行+报文头+空行 +报文体
(1)请求行:
①请求方法
GET | 通常用于请求服务器发送某个资源 |
POST | 用于向服务端提交数据,有主体 |
HEAD | 请求一个资源,但是不需要服务器发送资源而仅传回响应的首部信息 |
PUT | 向服务器写入文档;例如发布系统 |
DELETE | 请求删除URL指向的资源 |
OPTIONS | 用于查询服务端支持的请求方法 |
TRACE | 跟踪请求资源传输所经过防火墙、代理或网关等 |
CONNECT | HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器 |
其他 | LOCK;COPY;MOVE |
GET与POST区别
- get是从服务器上获取数据(get没有请求正文),post是向服务器传送数据。
- get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。
- get安全性非常低,post安全性较高。但是执行效率却比Post方法好。
- get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程
- 建议:
1、get方式的安全性较Post方式要差些,包含机密信息的话,建议用
Post数据提交方式;
2、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除
时,建议用Post方式;
②URL地址
URI:统一资源标识符 (包括URL,URI)
URL:统一资源定位符
URN:统一资源名
格式:<协议>://<主机>:<端口>/<路径>
③协议名称或版本号
HTTP 0.9/1.0/1.1
(2)报文头:HTTP报文头包含若干属性,格式“属性名:属性值”,服务端据此获取客户端的信息
请求字段:
Host:请求资源的主机和端口号
Accept:通过accept属性告诉服务器 客户端可以接受什么类型的响应。 如: Accept:text/plain
Accept-Charset:浏览器采用的是哪种编码
Accept-Encoding:浏览器支持解码的数据压缩格式
Cookie:客户端通过Cookie传给服务端
Referer:表示这个请求是从哪个url过来的(上一个 页面)
User-Agent:浏览器的具体类型
Cache-Control:对缓存进行控制
connection:连接的管理
DATE:创建报文的日期时间
(3)报文体:向HTTP要传输的数据内容
2.响应报文:响应行+响应头+空行+响应体
(1)响应行
①报文协议及版本
②状态码及状态描述
状态码:
信息性状态码:100~199
成功状态码:200~299
重定向状态码:300~399
客户端错误状态码:400~499
服务端错误状态码:500~599
常见状态码:
200:客户端请求成功
204:请求成功,但没有资源返回
206:客户端进行了范围请求
301:临时性重定向
302:永久性重定向
304:服务器资源未改变,可直接使用未过期的缓存
401:该状态码表示需要通过HTTP认证
403:请求访问的资源服务器拒绝
404:服务器没有资源
500:服务器内部错误
503:服务器当前不能处理客户端的请求
(2)响应头:多个属性组成
属性:
server:服务器所使用的Web服务器名称
Allow:通知客户端能够支持的HTTP方法
Content-Location:给出与报文主体部分相对于实际的URL
Location:引导用户转向与请求URL不同的资源301 302
ETag:代表响应服务端资源版本的报文头属性
Content-Type:响应正文的类型
Set-Cookie:服务端可以设置客户端的Cookie
Cache-Control:对缓存进行控制
connection:连接的管理
DATE:创建报文的日期时间
(3)响应体:http响应的数据内容
三.HTTP工作过程
(1)客户端建立TCP连接
(2)发送HTTP请求
(3)服务器接受请求并返回HTTP响应
(4)客户端释放TCP连接
(5)客户端浏览器解析HTML内容