HTTP简易分析

来源:互联网 发布:淘宝网手机客户端 编辑:程序博客网 时间:2024/05/29 19:02

下面是一个http的请求头部。可以看到请求头部第一行为请求行(请求方法、请求资源位置、请求协议版本),第二行为请求主机(这个在HTTP/1.1协议中是一定需要的,不然会报400 bad request),接下来则是一些头部配置。

Connection: keep-alive表示该连接为持久连接
Accept: 表示请求方支持的数据类型
Accept-Encoding:表示请求方支持的压缩方式
Accept-Language:表示请求方式支持的语言类型
Cookie:携带用户个人信息,比较重要
User-Agent:表明用户身份
Upgrade-Insecure-Requests:表明是否需要从http转到https

GET / HTTP/1.1Host: www.baidu.comConnection: keep-aliveUpgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8Accept-Encoding: gzip, deflate, sdch, brAccept-Language: zh-CN,zh;q=0.8Cookie: A=B;C=D;E=F;G=H

下面是一个http的返回头部。可以看到返回信息包括协议、返回状态码、具体服务地址、时间、数据类型及数据编码等

Expires:内容过期时间
Connection:表明连接保存长连接
Set-Cookie:设置cookie
Transfer-Encoding:chunked,identity,从字面意义可以理解,前者指把要发送传输的数据切割成一系列的块数据传输,后者指传输时不做任何处理,自身的本质数据形式传输。举个例子,如果我们要传输一本“红楼梦”小说到服务器,chunked方式就会先把这本小说分成一章一章的,然后逐个章节上传,而identity方式则是从小说的第一个字按顺序传输到最后一个字结束。
Cache-Control:参看http://www.cnblogs.com/cuixiping/archive/2008/05/04/1181056.html

HTTP/1.1 200 OKServer: bfe/1.0.8.18Date: Fri, 05 May 2017 13:47:20 GMTContent-Type: text/html;charset=utf-8Transfer-Encoding: chunkedConnection: keep-aliveCache-Control: privateExpires: Fri, 05 May 2017 13:47:20 GMTContent-Encoding: gzipX-UA-Compatible: IE=Edge,chrome=1Strict-Transport-Security: max-age=172800BDPAGETYPE: 2BDQID: 0xab79c5d30004052bBDUSERID: 794738359Set-Cookie: A=BSet-Cookie: C=DSet-Cookie: E=FSet-Cookie: G=H

HTTP响应也是由三个部分组成,分别是:状态行、消息报头、响应正文
1、状态行格式如下:
HTTP-Version Status-Code Reason-Phrase CRLF
其中,HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回的响应状态代码;Reason-Phrase表示状态代码的文本描述。
状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:
1xx:指示信息–表示请求已接收,继续处理
2xx:成功–表示请求已被成功接收、理解、接受
3xx:重定向–要完成请求必须进行更进一步的操作
4xx:客户端错误–请求有语法错误或请求无法实现
5xx:服务器端错误–服务器未能实现合法的请求
常见状态代码、状态描述、说明:
200 OK //客户端请求成功
400 Bad Request //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常

HTTP协议定义的是客户端与服务器互通信息的协议内容。通过设置头部信息,管理并控制双方对数据交互。底层使用tcp协议。考虑到tcp是一种面向连接的协议,而http是一种无连接、无状态的协议。因此http协议通过头部信息的设置控制http协议的传输过程。包括缓存控制,状态控制,连接控制,传输控制。这些内容稍后细谈。

待续……

0 0
原创粉丝点击