http协议

主要特点

  简单快速:客户向服务器请求服务时,只需传送请求方法和路径,使得HTTP服务器的程序规模小,因而通信速度很快。

  灵活:http允许传输任意类型的数据对象

  无连接:限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

  无状态:协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传.

报文组成

  请求报文:请求行,请求头,空行,请求体

  响应报文:状态行,响应头,空号,响应体

 1 POST / HTTP1.1
 2 Host:www.wrox.com
 3 User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
 4 Content-Type:application/x-www-form-urlencoded
 5 Content-Length:40
 6 Connection: Keep-Alive
 7 
 8 name=Professional%20Ajax&publisher=Wiley
 9 
10 第一部分:请求行,标明请求类型以及http1.1版本。
11 第二部分:请求头部,第二行至第六行。
12 第三部分:空行,第七行的空行。(标明接下来的是请求体)
13 第四部分:请求数据,第八行。

http方法

  GET         请求指定的页面信息,并返回实体主体。
  HEAD      类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
  POST      向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
  PUT        从客户端向服务器传送的数据取代指定的文档的内容。
  DELETE 请求服务器删除指定的页面。

get和post区别

  GET在浏览器回退时是无害的,而POST会再次提交请求。
  GET产生的URL地址可以被收藏,而POST不可以。
  GET请求会被浏览器主动缓存,而POST不会,除非手动设置。
  GET请求只能进行url编码,而POST支持多种编码方式。
  GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
  GET请求在URL中传送的参数是有长度限制的,而POST没有。
  对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
  GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
  GET参数通过URL传递,POST放在Request body中。

http状态

1xx响应信息提示
2xx - 成功
  200 - OK 一切正常
3xx - 重定向
  304 - Not Modified 服务器告诉客户,原来缓冲的文档还可以继续使用
4xx - 客户端错误
  403 - Forbidden 资源不可用
  404 - Not Found 无法找到指定位置的资源
5xx - 服务器错误
  503 - Service Unavailable 服务不可用

持久连接

  非持久连接:每个连接处理一个请求-响应事务。
  持久连接:每个连接可以处理多个请求-响应事务。
    持久连接情况下,服务器发出响应后让TCP连接继续打开着。同一对客户/服务器之间的后续请求和响应可以通过这个连接发送。
  HTTP/1.0 使用非持久连接。 HTTP/1.1 默认使用持久连接。

管线化

  将多个HTTP要求(request)整批提交的技术,而在传送过程中不需先等待服务端的回应。
  管线化机制须通过持久连接完成,仅HTTP/1.1支持此技术(HTTP/1.0不支持),并且只有GET和HEAD要求可以进行管线化,而POST则有所限制
  初次创建连接时也不应启动管线机制,因为对方(服务器)不一定支持HTTP/1.1版本的协议

 

posted @ 2018-09-14 16:00  枫叶布  阅读(233)  评论(0编辑  收藏  举报