主要特点:

  • 简单快速:每个资源uri是固定的,访问简单
    - 灵活:每个http协议头部都有一个数据类型(content-type),通过一个Http协议(不需要配合其他协议)就可以完成不同类型数据的传输
    - 无连接:连接一次就会断掉
    - 无状态:客户端和服务端是两种状态,服务端不会区分两次连接者的身份

    报文的组成部分:

  1. 请求报文:

请求行(http方法,页面地址,http协议以及版本),请求头(key,value告诉服务器要什么。host以下),空行(告诉服务端下一个不再是请求头),请求体


  1. 响应报文

状态行,响应头,空行,响应体

HTTP方法:

GET 获取资源
POST 传输资源
PUT 更新资源 很少用
DELETE 删除资源 一般不用
HEAD 获得报文头部

post/get区别:

get post
在浏览器回退时无害的 在浏览器回退时会再次提交请求,重复提交
产生的URL地址被收藏 不能收藏
请求会被浏览器主动缓存 需要手动设置才能被缓存
只能进行URL编码 支持多种编码方式
请求参数会被完整的保存在浏览器历史记录里 参数不会被保留
URL中传的参数有长度限制2kb(http协议对长度没限制,浏览器或服务器有) 没有限制
参数数据类型只能是ascii字符 没有限制
参数直接暴露在URL上,不能传递敏感信息 不暴露参数在url
参数通过URL传递 参数放在request body中

http状态码:

1xx 指示信息 表示请求已接收,继续处理
2xx 表示请求已被成功接收
3xx 重定向 要完成请求必须更进一步操作
4xx 客户端错误 请求有语法错误或者无法实现
5xx 服务器错误 服务器未能实现合法的请求
200 OK 客户端请求成功
206 Partial Content 客户端发送了一个带Range头的请求,服务端完成了它,一般是video视频播放,文件很大时候返回206
301 Moved permanently 所请求的页面已经转移至新的url
302 Found 所请求的页面已经临时转移至新的url
304 not modified 客户端有缓冲的文档并发出了一个条件性请求,服务器告诉客户端原来缓冲的文档还可以用
400 Bad Request 客户端请求有语法错误,不能被服务器理解
401 unauthorized 请求未经授权,必须和WWW-Authenticate报头域一起使用
403 Forbidden 对被请求页面的访问被禁止
404 NOT Found 请求的资源不存在
500 Internal Server Error 服务器发生不可预期的错误,原来缓冲的文档还可以继续使用
503 Server Unavailable 请求未完成,服务器临时过载或宕机,一段时间后可能恢复正常

什么是持久连接keep-alive:

  1. Http协议采用”请求——应答”模式
  2. 持久连接只有Http1.1支持,1.0不支持
  3. 使用普通模式:每个请求/应答,客户端和服务器都要新建一个连接,完成之后立即断开连接
  4. 使用Keep-alive模式:keep-alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,keep-alive功能避免了建立或重新建立连接

    什么是管线化:

  5. keep-alive情况下,把多个请求打包(原理)一次发送,服务器再把对应的响应打包返回

  6. 只有get/head请求可以进行管线化,post有限制
  7. 初次创建连接,不应启动管线机制,因为服务器不一定支持http1.1版本的协议
  8. 管线化不会影响响应的顺序
  9. 现代浏览器默认并未开启管线化支持