专栏名称: Cocoa开发者社区
CocoaChina苹果开发中文社区官方微信,提供教程资源、app推广营销、招聘、外包及培训信息、各类沙龙交流活动以及更多开发者服务。
目录
相关文章推荐
51好读  ›  专栏  ›  Cocoa开发者社区

HTTP 协议入门

Cocoa开发者社区  · 公众号  · ios  · 2016-08-21 10:30

正文

请到「今天看啥」查看全文



2.4 Content-Type 字段


关于字符的编码,1.0版规定,头信息必须是 ASCII 码,后面的数据可以是任何格式。因此,服务器回应的时候,必须告诉客户端,数据是什么格式,这就是Content-Type字段的作用。


下面是一些常见的Content-Type字段的值。


  • text/plain

  • text/html

  • text/css

  • image/jpeg

  • image/png

  • image/svg+xml

  • audio/mp4

  • video/mp4

  • application/javascript

  • application/pdf

  • application/zip

  • application/atom+xml


这些数据类型总称为MIME type,每个值包括一级类型和二级类型,之间用斜杠分隔。


除了预定义的类型,厂商也可以自定义类型。


application/vnd.debian.binary-package


上面的类型表明,发送的是Debian系统的二进制数据包。


MIME type还可以在尾部使用分号,添加参数。


Content-Type: text/html; charset=utf-8


上面的类型表明,发送的是网页,而且编码是UTF-8。


客户端请求的时候,可以使用Accept字段声明自己可以接受哪些数据格式。


Accept: */*


上面代码中,客户端声明自己可以接受任何格式的数据。


MIME type不仅用在HTTP协议,还可以用在其他地方,比如HTML网页。



2.5 Content-Encoding 字段


由于发送的数据可以是任何格式,因此可以把数据压缩后再发送。Content-Encoding字段说明数据的压缩方法。


Content-Encoding: gzipContent-Encoding:
compressContent-Encoding: deflate


客户端在请求时,用Accept-Encoding字段说明自己可以接受哪些压缩方法。


Accept-Encoding: gzip, deflate


2.6 缺点


HTTP/1.0 版的主要缺点是,每个TCP连接只能发送一个请求。发送数据完毕,连接就关闭,如果还要请求其他资源,就必须再新建一个连接。


TCP连接的新建成本很高,因为需要客户端和服务器三次握手,并且开始时发送速率较慢(slow start)。所以,HTTP 1.0版本的性能比较差。随着网页加载的外部资源越来越多,这个问题就愈发突出了。


为了解决这个问题,有些浏览器在请求时,用了一个非标准的Connection字段。


Connection: keep-alive


这个字段要求服务器不要关闭TCP连接,以便其他请求复用。服务器同样回应这个字段。


Connection: keep-alive


一个可以复用的TCP连接就建立了,直到客户端或服务器主动关闭连接。但是,这不是标准字段,不同实现的行为可能不一致,因此不是根本的解决办法。


三、HTTP/1.1


1997年1月,HTTP/1.1 版本发布,只比 1.0 版本晚了半年。它进一步完善了 HTTP 协议,一直用到了20年后的今天,直到现在还是最流行的版本。







请到「今天看啥」查看全文