HTTP协议
请求头(客户端与服务器交互)
客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发生了一个HTTP请求,一个完整的HTTP请求包括:一个请求行、若干请求头、及实体内容
示例:
GET/books/java.html HTTP/1.1 请求行(请求行用于描述客户端的请求方式、请求的资源名称、及使用的HTTP协议版本)
请求方式:GET(缺省,特点:显示提交,在URL地址后附带的参数是有限的,其数据容量通常不能超过1K; 提交数据显示在url栏中”?”后面);
POST(一般用于表单的提交,则可以再请求的实体内容中向发武器发送数据,传送的数据量无限制,隐式提交);
Accept:*/*
Accept-Language:en-ue
Connection:Keep-Alive 多个请求头(用于描述客户端请求的主机
Host:localhost ,及客户端的一些环境信息等)
Referer:thp://localhost/links.asp
User-Agent:Mozilla/4.0
Accept-Encoding:gzip,deflate
Hello world! 实体内容(一般是表单所提交的内容)
请求头的描述:
Accept: 告诉服务器,客户机所支持的数据类型,如:text/html,image/*; 就是说支持text的html,支持所有的image; 如为:*/*;表示什么都支持
Accept-Charset:ISO-8859-1 告诉服务器,客户机所采用的编码格式
Accept-Encoding:gzip,compress 告诉服务器,客户机所支持的压缩格式
Accept-Language: en-us,zh-cn 告诉服务器,客户机的语言环境
Host:localhost:8080 客户机要访问的主机
If-Modified-Since:Tue,11 jul 2000 18:23:51 GMT 告诉服务器,资源的缓存时间; 我们上一次浏览此网页的时间,发送给服务器,服务器用于比对原网站的更新时间,如果原网站在此时间内更新过数据,就重新返回数据,如没有更新就直接用客户机中缓存内的所缓存的网页
Referer:www.baidu.com 告诉服务器,他是从哪个资源来访问服务器的; 这里表示这是从百度访问的该资源(可以用于防盗链)
User-Agent:Mozilla/4.0(compatible;MSIE 5.5;Windows NT 5.0) 告诉服务器,客户机的软件环境(系统,及浏览器版本等)
Cookie: 客户机通过这个可以向服务器带数据
Connection:close/Keep-Alive 告诉服务器,当这个请求完毕后,是保持连接还是关闭连接; close是关闭连接, Keep-Alive是保持连接
Date:Tue,11 jul 2000 18:23:51 GMT 告诉服务器,客户机当前的时间
UA-CPU:X86 告诉服务器,windows的运行平台,如64位,32位等
If-None-Match:W/* 182-1303717494234
响应头(服务器与客户端交互)
一个http相应代表服务器向客户端回送的数据它包括:一个状态行、若干消息头、以及实体内容
示例:
HTTP/1.1 200 OK 状态行(状态行用于描述服务器对请求的处理结果)
Server:Microsoft-IIS/5.0
Date:Tue,11 jul 2000 18:23:51 GMT 多个消息头(消息头用于描述服务器的基本信息,
Content-Length:2291 以及数据的描述,服务器通过这写数据的描述信息,
Content-Type:text/html 可以通知客户端如何处理等一会它(服务器)回送的数据。)
Cache-control:private
<html>
<body></body> 实体内容(一般是网页代码)
</html>
响应头的描述
HTTP/1.1 200 OK 描述返回数据的协议版本号、状态码、原因叙述
状态码用于表示服务器对请求的处理结果,它是一个三位的十进制数.相应状态码分为5类,如:
100~199 表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程
200~299 表示成功接收请求并已完成整个处理过程, 常用200
300~399 为完成请求,客户需进一步细化请求.例如,请求的资源已经移动到一个新的地址,常用302、307、304(307和304表示服务器的资源位做修改,可以用客户机上的缓存,302表示去访问Location: 这个头所返回的地址)
400~499 客户端的请求有误,常用404(404表示服务器没有这个资源;403表示服务器拒绝你访问这个资源,请检查是否有权限访问)
500~599 服务器端出现错误, 常用500,(如同一个response对象同时使用字符流和字节流时服务器就会返回此异常,因为它们是互斥的)
Location:www.baidu.com (请求重定向)这个头配合302状态码使用,用于告诉客户端应该转到的地址
Server:Apache-Coyote/1.1 服务器通过这个头,告诉客户端服务器的类型
Content-Encoding:gzip,compress 服务器通过这个头,告诉客户端数据的压缩格式
Content-Length: 服务器通过这个头,告诉客户端压缩后数据的大小
Content-Type:text/html; charset=UTF-8 服务器通过这个头,告诉客户端数据的类型(如要查询要返回的文件类型的详细请查询conf/web.xml)
Last-Modified:Tue,11 jul 2000 18:23:51 GMT 告诉客户端,当前资源最后发布时间
Refresh:1;[url=’http://www.baidu.com’] 告诉浏览器隔多长时间刷新一次[如果在分号后面加上一个地址,表示隔多久时间跳转到这个网站]
Content-Disposition:attachment;filename=文件名 告诉浏览器通过这个头,告诉浏览器以下载方式打开
Transfer-Encoding:chunked 告诉浏览器文件的传送格式
Set-Cookie:ss=Q0=5Lb_nQ;path=/search
Etag:W/”7777-1242234904000” 缓存相关的头
Expires:-1 告诉浏览器,这个资源的缓存时间,-1或0表示不缓存; 如果要缓存,设置为要缓存到的时间
也是控制浏览器要不要缓存数据(浏览器的内核不同,所以响应头比较多)如果要缓存, 设置为要缓存到的时间 |
Cache-Control:no-cache
Pragma:no-cache
Connection:close/Keep-Alive 告诉浏览器请求完毕后是否断开连接
Date:Tue,11 jul 2000 18:23:51 GMT 告诉浏览器,服务器当前的时间
断点下载
请求头
Range头指示服务器只传输一部分Web资源.这个头可以用来实现断点续传功能,Range字段可以通过三种格式设置要传输的字节范围:
Range: bytes=1000-2000
表示请求服务器发送这个资源中1000字节到2000字节之间的内容
Range: bytes=1000-
表示请求服务器发送这个资源中1000字节以后的所有内容
Range: bytes=1000
表示请求服务器发送这个资源中最后1000字节的内容
响应头
Accept-Ranges:这个头告诉浏览器这个资源是否支持Ranges(断点下载) 支持返回:bytes 不支持返回:none
Content-Ranges:1000-3000/5000指定了返回的Web资源的字节范围。这里表示返回的数据是1000-3000字节之间的内容,这个资源总共有5000个字节