HTTP 请求消息头部实例:
HTTP协议规定,HTTP首部(headers)和HTTP主体之间是以一个空行分割的。因为HTTP每一行(每一行是指一个头部字段)是以\r\n结束的,一个空行的\r\n,再加上最后一行的结束符\r\n,一起是\r\n\r\n,也就是说,当检测到\r\n\r\n四个字符时,下一个字符开始就是HTTP body的内容了。
POST /form.asp HTTP/1.1<CR>
Accept:text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png <CR>//告诉服务器接受的类型
Accept-Language:zh-cn,zh <CR>//接收的语言和字符集
Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7 //申明自己接收的字符集
Accept-Encoding: gzip,deflate //申明接收编码方法,通常指定压缩方法(gzip,deflate)
Referer: http://localhost:8080/form.asp // 表示请求来源;百度统计来源、防盗链
Content-Type: multipart/form-data
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727) //浏览器表明自己的身份,可以反爬虫
Host: localhost:8080
Content-Length: 337
Location: 1.htm //重定向 302
Connection: Keep-Alive //数据传递完并不立即关闭连接,到底关不关取决于服务器的设置
Expires:Sun, 01 Jun 2008 12:37:47 GMT //HTTP/1.0 的头部,强制缓存
Cache-Control: max-age=120 //强制缓存,有多种选项
If-Modified-Since: Thu, 02 Mar 2006 06:50:13 GMT //协商缓存,资源最后的修改时间——》Last-Modified
If-None-Match: "b224758ec53dc61:9f0" //协商缓存,优先级高,资源的唯一标识——》ETag
Cookie: ASPSESSIONIDCSQCRTBS=LOIPGIMBLMNOGCOBOM // 携带的cookie,做用户认证
HTTP 响应消息头部实例:
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.1
X-Powered-By: ASP.NET
Date: Mon, 06 Mar 2006 12:55:57 GMT
Content-Type: text/html
Accept-Ranges: bytes
Content-Disposition: attachment // 下载文件
Cache-Control: max-age=120 // 强制缓存,有多种选项
Last-Modified: Mon, 06 Mar 2006 12:52:32 GMT //协商缓存,资源最后的修改时间——》If-Modified-Since
ETag: "76d85bd51c41c61:9f0" //协商缓存,资源的唯一标识,优先级高于Last-Modified——》If-None-Match
Content-Length: 20
Set-Cookie: key=haha; expires=Sun, 31-Dec-2006 16:00:00 GMT; path=/ //设置cookie,做用户认证
Response.AddHeader("Content-Disposition: attachment; filename=mypage.htm"); //下载文件
参考:
《图解HTTP》