HTTP是一个请求/回应协议,计算机发送一个请求(如:给我‘home.html’这个文件),然后服务器就送回一个响应(呐,这个就是你要的文件,后面跟着的就是home.html文件)。
HTTP Request包含内容说明:例,访问http://djce.org.uk/dumprequest 。使用Sniffer工具捕获信息如下:
GET /dumprequest HTTP/1.1
User-Agent: Opera/9.63 (Windows NT 5.1; U; Edition IBIS; zh-cn) Presto/2.1.1
Host: djce.org.uk
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
Referer: http://www.google.cn/search?hl=zh-CN &newwindow=1&q=http+request&btnG=Google+%E6%90%9C%E7%B4%A2&meta=&aq=0&oq=http+req
Pragma: no-cache
Cache-Control: no-cache
Connection: Keep-Alive
分析如下:
1、源IP地址、端口和代理
Source IP address: 58.248.112.83
Source port: 2482
Via: not present
X-Forwarded-For: not present
为了收到服务发回来的回应,必须告诉服务器发送方的IP、端口。另一方面,也可以通过一个或多个代理服务器访问。如果HTTP Request中包含了“Via”或“X-Forwarded-For”,强烈指示了至少是通个一个代理服务的。如查这两项都没包含,则没有通过代理服务 器,或是仅仅通过不加“Via” / “X-Forwarded-For”头来选择不“显示”。
2、目标IP地址、端口、主机和协议
Destination IP address: 91.84.196.2
Destination port: 80
Host: djce.org.uk
Protocol: HTTP/1.1
这些头告诉我们试图访问哪个Web 服务器,一个服务器上有许多网站,所以用IP和Host确定到底访问哪个网站。协议一般为HTTP/1.0或HTTP/1.1之一,由浏览器的属性和经过的代理所决定。
3、请求的URI(通用资源标识符)
Requested URI: /dumprequest
与“Host”头和目标端口一起,详细指定了想要取回的文档。根据给定的所有值,我们要得到要访问的文档的URL为:http://djce.org.uk/dumprequest
4、请求方法和内容:
Request method: GET
Data: none
请求方法有两种,要不是“GET”,要不就是“POST”。基本上要在网页上填一个表单然后递交的话,一般产生一个POST请求(也有可能是GET),而通过点击一个链接、或书签或收藏夹的,请求方法通常是GET。
如是是POST的话,表单要明确地递交,“Content-”头描述了递交的数据。浏览器产生两种POST数据,一种是 “multipart/form-data”,用于上传文件,另一种就是普通的“application/x-www-form- urlencoded”。
5、用户代理(User agent)
User-Agent: Opera/9.63 (Windows NT 5.1; U; Edition IBIS; zh-cn) Presto/2.1.1
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
User-Agent头:描述了用户浏览器,典型的它包含了浏览器名称和版本(如Firefox 1.0.7)、操作系统和版本(如Window XP)和可能的附加信息(如装了哪个系统补丁)。
“Accept”头:描述浏览器可以处理的各种事物,如果有选择的话宁可给出各种类型。“Accept”头本身描述了浏览器可以处理的文档类型,比如告诉服务器浏览器有能力处理“image/png”图像。
“Accept-Charset”头:描述可以接受何种字符集。通过这个可以猜测用户使用什么语言,如西欧和北美通常仅用“iso-8859-1”、“us-ascii”、“uft-8”,若出现“big5”则可能是台湾。
“Accept-Encoding”头:描述浏览器处理文档压缩传输的能力。
“Accept-Langage”头:告诉服务器你较喜欢接收哪种语言的文档(如果服务器有提供选择的话)。
6、来源页(Referring Page)
Referer: http://www.google.cn/search?hl=zh-CN &q=http+request&btnG=Google+%E6%90%9C%E7%B4%A2&meta=&aq=f&oq=
“ Referer”头:告诉服务器是从哪个页面链接进来的。上面例子中就表示从Google搜索引擎链接进来的。如果是点击书签或直接输入网址的话,Refere头将缺失。
7、Cookies
Cookie: not present
每次Web服务器提供给用户一个回应(一个页面、图像等),它有机会向用户浏览器发送一个“Cookie”,Cookie是用户浏览器保存的一小片信 息,可以在随后发送请求文档时送回给同一个Web服务器。(1)Cookie只能被送回与第一次发过来的同一个Web服务器;(2)Cookie的内容只 包含服务器能够知道的信息。
8、连接控制
Connection: Keep-Alive, TE
Keep-Alive: not present
这个头用于微调网络交通。Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。
9、缓存控制
Pragma: not present
Cache-Control: not present
If-Modified-Since: not present
这个头用于控制文档缓存。通过检查它们,可以检测到用户是否使用“刷新”按钮来强制重新载入文档。
比如用Mozila的刷新按钮,它会将“Cache-Control” 设为 “max-age=0”,而MSIE5.5会设为“no-cache”。
10、授权
Username: not present
当登录到一个Web服务器时,客户的用户名出现在这里。注,仅用于正规的HTTP认证。即一个弹出登录框,有三次机会输入用户密码。
有时在URL中输入用户名密码,如http://user:password@www.example.com/ ,这种情况下,用户名也会显示在这里。
总结:
请求头中包含比较有趣的信息片:
源IP地址
HTTP代理服务器
请求的是哪个文档
使用的浏览器版本
是从哪里链接过来的
优先的语言
Cookies
Cookies中有些信息可以明显看得出是什么意思,如LastLoginName=Jred。但更多的内容很难知道是什么意思,只有服务器能理解,如TGIDX=wl4o6ulhw48lw845yh68hylohw45。
HTTP请求头(HTTP Request)
最新推荐文章于 2025-03-11 21:05:30 发布