http知识点

51 阅读4分钟

http主要特点

  • 简单快速

资源的地址是固定的

  • 灵活

http协议中有个head部分,会有一个数据类型,通过一个http协议,就能完成不同数据类型的传输

  • 无连接

连接一次就会断掉,不会保持连接

  • 无状态

客户端和服务端是两种,客户端请求服务端,http帮助建立连接、传输数据

http报文的组成部分

请求报文

  • 请求行

请求行包含:http方法、页面地址、http协议、版本

  • 请求头

就是一些key/value值来告诉服务端我要哪些内容,要注意哪些类型

  • 空行

遇到空行,表示下一行不再是请求头部分

  • 请求体

相应报文

  • 状态行

  • 相应行

  • 空行

  • 响应体

http方法

  • get

获取资源

  • post

传输资源

  • put

更新资源

  • delete

删除资源

  • head

获得报文首部

post和get的区别

  • get在浏览器回退时是无害的,而post会再次提交请求

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

  • get请求会被浏览器主动缓存,而post不会,除非手动设置

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

  • get请求在url中传送的参数是有长度限制的,而post没有限制

  • get比post更不安全,因为参数直接暴露在url上,所以不能用来传递敏感信息

  • get参数通过url传递,post放在request body中

http状态码

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

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

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

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

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

200 ok:客户端请求成功

301 moved permanently:所请求的页面已经转移至新的url

302 fonund: 所请求的页面已临时转移至新的url

304 not modified: 客户端有缓存的文档并发出了条件性请求,服务器告诉客户,原来的缓存文档还可以继续使用

400 bad request: 客户端请求有语法错误,不能被服务器所理解

401 unauthorized: 请求未经授权,这个状态代码必须和www-authenticate报头域一起使用

403 forbidden: 请求的页面访问被禁止

404 not found:请求资源不存在

500 internal server error: 服务器发生不可预期的错误原来缓存的文档还可以继续使用

503 server unavailable: 请求未完成,服务器临时过载或当机,一段时间后可能恢复正常

什么是持久连接

http协议采用“请求-应答”模式,当使用普通模式,即非keep-alive模式时,每个请求/应答客户和服务器都要新建一个连接,完成之后立即断开连接(http协议为无连接的协议)

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

持久连接在http1.1才能使用

什么是管线化

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

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

管线化的状态下

某个连接上的消息变成类似这样

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

  • 管线化机制通过持久连接完成,仅http1.1支持此技术

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

  • 初次创建连接时不应启动管线机制,因为对方(服务器)不一定支持http1.1版本协议

  • 管线化不会影响响应到来的顺序

  • 开启管线化很可能并不会带来大幅度的性能提升,而且很多服务器端的代理程序对管线化的支持并不好,因此chrome和firefox默认未开启管线化支持