1、HTTP请求
HTTP请求由三部分组成,请求行,消息报头,请求正文
http请求行以一个方法开头,以空格开头,后面跟着URI以及http协议版本,每行结尾使用回车和换行,CRLF标识回车换行
请求方法:
GET:请求获取URI所标识的资源
POST:在URI所标识的资源后附加新的数据
HEAD:请求获取由URI所标识的的资源的响应头信息
PUT:请求URI所标识的服务器存储一个资源
DELETE:请求服务器删除URI所表示的资源
TRACE:请求服务器回送收到的请求信息,用于测试或诊断
CONNECT:
OPTIONS:请求擦讯服务器的性能
eg:GET http://www.baidu.com/ HTTP1.0(CRLF)
完整请求实例:
2、请求报头:允许客户端向服务器端传递附加信息
Accept:请求报头域用于指定客户端接收哪些类型的信息。如:Accept:image/gif,text/html
具体一点的类型查看http://tool.oschina.net/commons
Accept-Charset:请求报头域用于指定客户端接受的字符集,缺省表示任何字符集都可以接受
Accetpt-Encoding:指定浏览器可以支持的web服务器返回内容压缩编码类型。如:Accept-Encoding:gzip.deflate
Accept-Language:指定客户端可以接受的语言。 如:Accept-Language:zh-cn
Authorization:用于证明证明客户端有权查看某个资源
Cache-Control:指定所有缓存机制在整个 请求/响应链中必须服从的指令。
Cache-Control值:
Cache-directive | 打开一个新的浏览器窗口 | 在原窗口中单击 Enter 按钮 | 刷新 | 单击 Back 按钮 |
---|---|---|---|---|
public | 浏览器呈现来自缓存的页面 | 浏览器呈现来自缓存的页面 | 浏览器重新发送请求到服务器 | 浏览器呈现来自缓存的页面 |
private | 浏览器重新发送请求到服务器 | 第一次,浏览器重新发送请求到服务器;此后,浏览器呈现来自缓存的页面 | 浏览器重新发送请求到服务器 | 浏览器呈现来自缓存的页面 |
no-cache/no-store | 浏览器重新发送请求到服务器 | 浏览器重新发送请求到服务器 | 浏览器重新发送请求到服务器 | 浏览器重新发送请求到服务器 |
must-revalidation/proxy-revalidation | 浏览器重新发送请求到服务器 | 第一次,浏览器重新发送请求到服务器;此后,浏览器呈现来自缓存的页面 | 浏览器重新发送请求到服务器 | 浏览器呈现来自缓存的页面 |
max-age=xxx (xxx is numeric) | 在 xxx 秒后,浏览器重新发送请求到服务器 | 在 xxx 秒后,浏览器重新发送请求到服务器 | 浏览器重新发送请求到服务器 | 在 xxx 秒后,浏览器重新发送请求到服务器 |
Connection:表示是否需要持久连接,(HTTP1.1默认进行持久连接)。如:Connection:close,Connection:keep-Alive,表示持久连接
Cookie:HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发给web服务器
Content-Length:请求的内容长度
Content-Type:请求与实体对应的MIME信息
Date:请求发送的时间和日期
Host:指定请求的服务器的域名和端口号
Except:请求特定的服务器行为
If-Match:请求内容与实体相匹配才有效
If-Modified-Since:如果请求的部分在指定时间之后被修改则请求成功,未被修改则返回304代码
Pragma:用来包含特定的指令。如:Pragma: no-cache
Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。
User-Agent:允许客户端将它的操作系统、浏览器和其它属性告诉服务器
3、响应报头
Location:用于重定向接受者到一个新的位置
Accept-Charset:表明服务器是否支持指定范围请求及哪种类型的分段请求
Age:从原始服务器到代理缓存形成的估算时间(以秒计,非负
Allow:对某网络资源的有效的请求行为,不允许则返回405。如:Allow: GET, HEAD
Cache-Control:告诉所有的缓存机制是否可以缓存及哪种类型。如:Cache-Control: no-cache
Content-Encoding:web服务器支持的返回内容压缩编码类型。如:Content-Encoding: gzip
Content-Language:响应体的语言。如:Content-Language: en,zh
Content-Length:响应体的长度。如:Content-Length: 348
Content-Location:请求资源可替代的备用的另一地址。如:Content-Location: /index.htm
Content-MD5:返回资源的MD5校验值
Content-Range:在整个返回体中本部分的字节位置。如:Content-Range: bytes 21010-47021/47022
Content-Type:返回内容的MIME类型。如:Content-Type: text/html; charset=utf-8
Date:原始服务器消息发出的时间
Expires:响应过期的日期和时间。
Pragma:包括实现特定的指令,它可应用到响应链上的任何接收方。如:Pragma: no-cache
Proxy-Authenticate:它指出认证方案和可应用到代理的该URL上的参数。如:Proxy-Authenticate: Basic
refresh:表示浏览器应该在多少时间之后刷新文档,以秒记。如:response.setHeader("refresh","3"),实现页面每3s刷新一次;
response.setHeader("refresh","3;url='/a/index.html'"),实现3s刷新并跳转到指定的URl
Retry-After:如果实体暂时不可取,通知客户端在指定时间之后再次尝试。如:Retry-After: 120
Server:web服务器软件名称。如:Server: Apache/1.3.27 (Unix) (Red-Hat/Linux)
Set-Cookie:设置Http Cookie
WWW-Authenticate:表明客户端请求实体应该使用的授权方案。如:WWW-Authenticate: Basic