HTTP协议漫谈
这里重点说一下Get和Post方法,网上关于Get和Post的区别满天飞。但很多没有说到点子上。Get和Post最大的区别就是Post有上面所说的第三部分:内容。而Get不存在这个内容。因此就像Get和Post其名称所示那样,Get用于从服务器上取内容,虽然可以通过QueryString向服务器发信息,但这违背了Get的本意,QueryString中的信息在HTTP看来仅仅是获取所取得内容的一个参数而已。而Post是由客户端向服务器端发送内容的方式。因此具有请求的第三部分:内容。 HTTP响应(HTTP Response)当Web服务器收到HTTP请求后,会根据请求的信息做某些处理(这些处理可能仅仅是静态的返回页,或是包含Asp.net,PHP,Jsp等语言进行处理后返回),相应的返回一个HTTP响应。HTTP响应在结构上很类似于HTTP请求,也是由三部分组成,分别为: 1.状态行 2.HTTP头 3.返回内容 首先来看状态行,一个典型的HTTP状态如下: HTTP/1.1 200 OK 第一部分是HTTP版本,第二部分是响应状态码,第三部分是状态码的描述,因此也可以把第二和第三部分看成一个部分。 对于HTTP版本没有什么好说的,而状态码值得说一下,网上对于每个具体的HTTP状态码所代表的含义都有解释,这里我说一下分类。
HTTP响应中包含的头包括1.响应头(response header) 2.普通头(general header) 3.实体头(entity header)。 第三部分HTTP响应内容就是HTTP请求所请求的信息。这个信息可以是一个HTML,也可以是一个图片。比如我访问百度,HTTP Response如图 5 所示。
图5.一个典型的HTTP响应 图 5 中的响应是一个HTML,当然还可以是其它类型,比如图片,如图 6 所示。
图6.HTTP响应内容是图片 这里会有一个疑问,既然HTTP响应的内容不仅仅是HTML,还可以是其它类型,那么浏览器如何正确对接收到的信息进行处理? 这是通过媒体类型确定的(Media Type),具体来说对应Content-Type这个HTTP头,比如图 5 中是text/html,图 6 是image/jpeg。 媒体类型的格式为:大类/小类 比如图 5 中的html是小类,而text是大类。 IANA(The Internet Assigned Numbers Authority,互联网数字分配机构)定义了 8 个大类的媒体类型,分别是:
HTTP头HTTP头仅仅是一个标签而已,比如我在Aspx中加入代码: Response.AddHeader("测试头","测试值"); 对应的我们可以在fiddler抓到的信息如图 7 所示。 (编辑:西安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |