这两天学习http协议,写下自己学到的东西
---关于message的长度
Http1.0
当实体主体被包括在消息中,主体长度可以有两种方式确定。如果内容长度
(Content-Length)标题域存在,其字节值就是实体主体长度;否则,其主体长度由服务端
关闭连接时确定。
http1.1
1.对response,如果不包含消息体(如1xx,204,304消息以及对HEAD请求的response),由第一个空行结束
2.如果有Transfer-Encoding请求头域且值不是"identity",除非连接被关闭,则传输的长度由"chunked编码定义.
3.如果有Content-Length域,它的值表示实体和传输长度.如果消息头中同时有
Transfer-Encoding和Content-Length,则应该忽略Content-Length字段.
4.如果消息使用"multipart/byteranges"媒体类型,而且长度不能由其它方式决定,那么由这种自定义边界的媒体类型
确定传输的长度.但是除非直到接收方能够解析这种媒体类型,否则发送方不能使用这种方式.
5.服务器断开连接.
为和http1.0的应用兼容,htpp1.1的包含消息体的请求必须在请求头中有合法的content-length字段.
如果有content-length字段,这个字段的值必须和消息体的八进制字符数相同.(这句好像翻译的不对)
---关于connection:keep-alive
从 http1.0开始支持保持浏览器和服务器的persistent连接.在http1.1中为默认的连接方式.是为了减少浏览器和服务器建立连接的消耗.
浏览器可以不等服务器返回其请求而连续发送请求.服务器的response与浏览器的reques顺序对应