http 1.0的会话方式
建立连接
发出请求信息
会送响应信息
关闭连接
浏览器于WEB服务器的连接过程是短暂的,每次连接指处理一个请求和响应,对每一个页面的访问,浏览器与Web服务器都要建立一次单独的连接。
浏览器到Web服务器之间的所欲通讯都是完全独立分开的请求和响应对。
是打开附件
HTTP1.1的特点
在一个TCP连接上可以传多个HTTP请求和响应
多个请求和响应过程可以重叠惊醒
HTTP请求消息
请求消息的结构:一个请求行、若干消息头、以及实体内容,其中一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开。
HTTP响应消息
一个状态行、若干消息头、以及实体内容,其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开。
HTTP消息——》其他细节
响应消息的实体内容就是网页文件的内容,也就是再浏览器中使用查看问价的方式看到的内容
一个使用GET方式的请求消息中不能包含实体内容,只有使用POST、PUT、DELETE方式的请求消息中才可以包含实体内容
对于HTTP1.1来说,如果HTTP消息中包括实体内容,且没有采用chunked传输编码方式,那么消息头部分必须包含内容长度的字段,否则,客户和服务程序就无法知道实体内容何时结束
在HTTP协议中,还可以使用简单的请求消息和响应消息,它们都没有消息头部分,简单的请求消息只能用GET方式,且请求行中不能指定HTTP版本号。对于简单的请求消息,服务器返回简单的响应消息,简单的响应消息中只返回实体内容。
HTTP消息头
使用消息头,可以实现HTTP客户机与服务器之间的条件请求和应答,消息头相当于服务器和浏览器之间的一些暗号指令
每个消息头包含一个头字段名称,然后依次是冒号、空格、值、回车和换行符
消息头字段名是不区分大小写的,但习惯上将每个单词的第一个字母大写。
整个消息头部分中的各行消息头可按任何顺序排列。
消息头又可以分为通用信息头、请求头、响应头、实体头等四类。
许多请求头字段都允许客户端在值部分指定多个可接受的选项,多个项之间以逗号分隔。
有些头字段可以出现多次
请求行于状态行
请求行:
格式:请求方式 资源路径 HTTP版本号<CRLF>
请求方式:POST、HEAD、 OPTIONS、 DELETE、 TRACE、 PUT
状态行:
格式:HTTP版本号 状态码原因叙述<CRLF>
使用GET和POST方式传递参数
GET方式特点:传送数据量的限制的,一般限制在1KB一下
POSt方式特点:传送的数据量要比GET方式传送的数据量大得多
通用信息头
通用信息头字段既能用于请求消息,也能用于响应消息,它包括一些与被传输的实体内容没有关系的常用消息头字段。
Cache-Control:no-cache (*)
Connection:close/Keep-Alive (*)
Date: Tue, 11 Jul2000 18:23:51 GMT
Pragma:no-cache (*)
Trailer: Date
Transfer-Encoding:chunked (*)
Upgrade: HTTP/2.0,SHTTP/1.3
Via: HTTP/1.1Proxy1, HTTP/1.1 Proxy2
Warning: any text
请求头
请求头字段用于客户端在请求消息中向服务器传递附加信息,主要包括客户端可以接受的数据类型、压缩方法、语言、以及发出请求的超链接所属网页的URL地址等信息。
Accept:text/html,image/* (*)
Accept-Charset:ISO-8859-1,unicode-1-1 (*)
Accept-Encoding:gzip,compress (*)
Accept-Language:en-gb,zh-cn (*)
uthorization:Basic enh4OjEyMzQ1Ng== (*)
Expect:100-continue
From:zxx@it315.org
Host:www.it315.org:80 (*)
If-Match:"xyzzy", "r2d2xxxx"
If-Modified-Since:Tue, 11 Jul 2000 18:23:51 GMT (*)
If-None-Match:"xyzzy", "r2d2xxxx"
If-Range: Tue, 11Jul 2000 18:23:51 GMT
If-Unmodified-Since:Tue, 11 Jul 2000 18:23:51 GMT
Max-Forwards: 1
Proxy-Authorization:Basic enh4OjEyMzQ1Ng==
Range: bytes=100-599(*)
Range: bytes=100-
Range: bytes=-100
Referer:http://www.it315.org/index.jsp (*)
TE:trailers,deflate
User-Agent:Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) (*)
响应头
响应头字段用于服务器在响应消息中向客户端传递附加信息,包括服务程序名,被请求资源需要的认证方式,被请求资源已移动到的新地址等信息。
Accept-Range:bytes (*)
Age: 315315315
Etag: b38b9-17dd-367c5dcd
Location:http://www.it315.org/index.jsp (*)
Proxy-Authenticate:BASIC realm="it315"
Retry-After: Tue,11 Jul 2000 18:23:51 GMT
Server:Microsoft-IIS/5.0 (*)
Vary:Accept-Language
WWW-Authenticate:BASIC realm="it315" (*)
实体头
实体头用作实体内容的元信息,描述了实体内容的属性,包括实体信息类型、长度、压缩方法、最后一次修改时间、数据有效期等。
Allow: GET,POST
Content-Encoding:gzip (*)
Content-Language:zh-cn (*)
Content-Length: 80(*)
Content-Location:http://www.it315.org/java_cn.html
Content-MD5: ABCDABCDABCDABCDABCDAB==
Content-Range:bytes 2543-4532/7898 (*)
Content-Type:text/html; charset=GB2312 (*)
Expires: Tue, 11Jul 2000 18:23:51 GMT(*)
Last-Modified:Tue, 11 Jul 2000 18:23:51 GMT(*)
扩展头
在HTTP消息中,也可以使用一些在HTTP1.1正式规范里没有定义的头字段,这些头字段统称为自定义的HTTP头或扩展头,它们通常被当作是一种实体头处理。
现在流行的浏览器实际上都支持Cookie、Set-Cookie、Refresh和Content-Disposition等几个常用的扩展头字段。
Refresh头字段
Refresh: 1
Refresh:1;url=http://www.it315.org
Content-Disposition头字段
Content-Type:application/octet-stream
Content-Disposition: attachment;filename=aaa.zip