HTTP协议类

HTTP协议类

HTTP协议的主要特点

简单快速 每个资源是固定的URI

灵活 通过一个HTTP协议可以完成不同的数据类型的传输

无连接 连接一次就会断开,不会保持连接

无状态 客户端和服务端是两种身份,一次连接后就断开,下次再连接,服务端无法区分两次是否由同一客户端发起的请求

HTTP报文的组成部分

请求报文

请求行 http方法、页面地址、http协议以及版本

请求头 key:value值 告诉服务端我要什么内容要注意什么 类型

空行 最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头 不是请求头的部分了

请求体 空行是用来分隔请求头和请求体

响应报文

状态行

响应头

空行

响应体

HTTP方法

类别

GET获取资源

POST传输资源

PUT更新资源

DELETE删除资源

HEAD获取报文首部

post与get的区别

! get在浏览器回退时是无害的,post会再次提交

get产生的url地址可以被收藏,post不可以

! get请求自动被浏览器缓存,post不会,除非手动设置

get请求只能进行url编码,post支持多种

! get请求参数会被完整保留在浏览器历史记录里,post中的参数不会被保留

! get请求在url中传送的参数是长度限制的(2kb),post没有

对参数的数据类型,get只接受ascii码,post没有

get比post更不安全,因为参数直接暴露在url上

! get参数通过url传递,post放在Request body中

HTTP状态码

1xx 指示信息 表示请求已接收,继续处理

2xx 成功 表示请求已被成功接收

3xx 重定向 要完成请求必须进行更进一步的操作

4xx 客户端错误 请求有语法错误或者请求无法实现

5xx 服务器错误 服务器未能实现合法的请求

eg

200 OK

206 Partical OK

301 Moved Permanently 转移到新的url

302 Found 临时转移到新的url

304 Not Modified

400 Bad Request

401 Unauthorized

403 Forbidden

404 Not Found

500 Internal Server Error

503 Server Unavailble

持久连接

请求-应答模式

HTTP协议采用“请求-应答”模式,当使用普通模式时,每个请求/应答客户和服务器都要建立一个连接,完成之后立即断开连接

Keep-alive模式

使用“keep-alive”模式(持久连接/连接重用)时,keep-alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-alive功能避免了建立或者重新连接 1.1+支持

管线化

在使用持久连接的情况下,某个连接上消息的传递类似于:

请求1->响应1->请求2->响应2->请求3->响应3

某个连接上的消息变成了

请求1->请求2->请求3->响应1->响应2->响应3

特点

管线化机制通过持久连接完成,仅http/1.1支持

只有get和head请求可以进行管线化,post有所限制

初次创建连接时不应启动管线化机制,因为服务器不一定支持http/1.1版本的协议

管线化不会影响响应到来的顺序,响应返回的顺序并未改变

http/1.1要求服务端支持管线化,但并不要求服务器端也对响应进行管线化处理,只是要求对于管线化的请求不失败

chrome和firefox默认未开启管线化支持