HTTP 请求消息组成
请求行 ----- Method HTTP-URI HTTP-VERSION CRLF
报头消息 ---
请求正文
======
HTTP响应消息组成
状态行 --- HTTP-Version Status-Code Reason-Phrase CRLF(HTTP-Version Status-Code Reason-Phrase CRLF)
报头消息
响应正文
===========
消息包头分为几种:普通报头,请求报头,响应包头,实体报头
普通报头:
Cache-Control 用于指定缓存指令,缓存指令是单向的(响应中出现的缓存指令在请求中未必会出现),且是独立的(一个消息的缓存指令不会影响另一个消息处理的缓存机制)
请求时的缓存指令包括:no-cache(用于指示请求或响应消息不能缓存)、no-store、max-age、max-stale、min-fresh、only-if-cached;
响应时的缓存指令包括:public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age、s-maxage.
Date 普通报头域表示消息产生的日期和时间
Connection 普通报头域允许发送指定连接的选项。例如指定连接是连续,没有设置该域则认为实体内容将提供给所有的语言阅读
者或者指定“close”选,通知服务器,在响应完成后,关闭连接。
请求报头:
Accept:指定客户端接受哪些类型的信息,eg
image/gif 表明客户端希望接受GIF图象格式的资源
text/html,表明客户端希望接受html文本
Accept-Charset:
用于指定客户端接受的字符集。eg:Accept-Charset:iso-8859-1,gb2312.如果在请求消息中没有设置这个域,缺省是任何字符集都可以接受。
Accept-Encoding:
用于于指定可接受的内容编码,Accept-Encoding:gzip.deflate.如果请求消息中没有设置这个域服务器假定客户端对各种内容编码都可以接受
Authorization:
证明客户端有权查看某个资源---应该是用户名,密码之类的
Host:
此处使用缺省端口号80,若指定了端口号,则变成:Host:www.guet.edu.cn:指定端口号
User-Agent:
其中列出了你的操作系统的名称和版本,你所使用的浏览器的名称和版本
请求报头举例:
GET /form.html HTTP/1.1 (CRLF)
Accept:image/gif,image/x-xbitmap,image/jpeg,application/x-shockwave-flash,application/vnd.ms-excel,application/vnd.ms-powerpoint,application/msword,*/* (CRLF)
Accept-Language:zh-cn (CRLF)
Accept-Encoding:gzip,deflate (CRLF)
If-Modified-Since:Wed,05 Jan 2007 11:21:25 GMT (CRLF)
If-None-Match:W/"80b1a4c018f3c41:8317" (CRLF)
User-Agent:Mozilla/4.0(compatible;MSIE6.0;Windows NT 5.0) (CRLF)
Host:www.guet.edu.cn (CRLF)
Connection:Keep-Alive (CRLF)
(CRLF)
响应报头:
Location:
Location响应报头域用于重定向接受者到一个新的位置----重定向----
Server:
服务器处理此请求软件信息,Server:Apache-Coyote/1.1 和请求包头中的UserAgent相互对应
WWW-Authenticate:
响应报头域必须被包含在401(未授权的)响应消息中,客户端收到401响应消息时候,并发送Authorization报头域请求服务器对其进行验证时,服务端响应报头就包含该报头域。 eg:WWW-Authenticate:Basic realm="Basic Auth Test!" //可以看出服务器对请求资源采用的是基本验证机制
实体报头:
Content-Encoding:指示了已经被应用到实体正文的附加内容的编码,eg:Content-Encoding:gzip
Content-Language:实体报头域描述了资源所用的自然语言 eg:没有设置该域则认为实体内容将提供给所有的语言阅读者
Content-Length:用于指明实体正文的长度Content-Type:text/html;charset=ISO-8859-1
Content-Type:text/html;charset=GB2312
Content-Type:实体报头域用语指明发送给接收者的实体正文的媒体类
Last-Modified:实体报头域用于指示资源的最后修改日期和时间
Expires:Expires实体报头域给出响应过期的日期和时间。
测试:
1, telnet www.baidu.com 80 (WIN7默认不开启telnet客户端,添加或者删除程序---打开或关闭windows功能,telnet客户端开启)
2, GET / HTTP/1.1 CRLF (CTRL+] 设置回显 按enter键 输入请求报头--然后可以看到响应报头)
HOST: www.baidu.com ----------在请求报头上必须制定HOST选项
3,会看到响应报文
以上文章 摘抄自 HTTP详解 http://blog.csdn.net/gueter/article/details/1524447
HTTP协议基本认证
http://www.cnblogs.com/TankXiao/archive/2012/09/26/2695955.html
Basi Auth Test username:password 然后通过BASE64加密,然后放到Authorization: 这个字段
example
GET /login HTTP/1.1
Host: i.baidu.com
Authorization: secret---