HTTP协议的组成
请求部分
GET / HTTP/1.1 请求行:位于请求的第一行
Accept: */* 请求消息头:从第2行开始至第一个空行
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
Host: localhost:8080
Connection: Keep-Alive
username=admin&password=123 请求正文:第一个空行之后的全部都是请求正文
响应部分
HTTP/1.1 200 OK 响应行:位于响应的第一行
Server: Apache-Coyote/1.1 响应消息头:从第2行开始至第一个空行
Accept-Ranges: bytes
ETag: W/"7777-1322450448000"
Last-Modified: Mon, 28 Nov 2011 03:20:48 GMT
Content-Type: text/html
Content-Length: 7777
Date: Sat, 15 Sep 2012 01:47:06 GMT
..... 响应正文:第一个空行之后的全部都是响应正文
浏览器显示的就是正文中的内容
各组成部分详解
请求部分
GET / HTTP/1.1 请求方式 请求的资源路径 协议版本号
GET:请求方式。常用的有GET、POST
GET方式:默认方式。直接输入的网址。
表单数据出现在了行中。url?username=abc&password=123
特点:不安全;有长度限制(<1k)
POST方式:可以通过表单form method="post"
表单数据会出现在正文中。
特点:安全;没有长度限制
*Accept:浏览器可接受的MIME类型.MIME类型:文件系统中使用扩展名来区分不同文件类型的。
在web中使用MIME类型来区分文件类型。(Tomcat\conf\web.xml中有所有的MIME类型,比如text/html)
Accept-Charset: 浏览器通过这个头告诉服务器,它支持哪种字符集
*Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip
Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。 可以在浏览器中进行设置。
*Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面
应用:防盗链;统计网站投放广告的效果
*Content-Type: application/x-www-form-urlencoded提交的内容类型
form表单的enctype="application/x-www-form-urlencoded"的默认值
*If-Modified-Since: Wed, 02 Feb 2011 12:04:56 GMT利用这个头与服务器的文件进行比对,如果一致,则从缓存中直接读取文件
*****Cookie:这是最重要的请求头信息之一 。会话技术有关
Warning: w1
Warning: w2
username=admin&password=123 请求正文:第一个空行之后的全部都是请求正文
响应部分
HTTP/1.1 200 OK 协议版本号 响应码 描述
响应码:(实际用到的30个左右。其他都是W3C保留的)。
描述:对响应码的描述
常用响应码:
200:一切正常
302/307:请求的资源变更了
304:资源没有被修改过
404:资源不存在
500:服务器程序有错
*Location: http://www.it315.org/index.jsp指示新的资源的位置。配合响应码302/307来使用。
302/307+Location:请求重定向
Server:apache tomcat指示服务器的类型
*Content-Encoding: gzip服务器发送的数据采用的编码类型
Content-Length: 80 告诉浏览器正文的长度
*Content-Type: text/html; charset=GB2312服务器发送的内容的MIME类型
*Refresh: 1;url=http://www.it315.org指示客户端刷新频率。单位是秒
*Content-Disposition: attachment; filename=aaa.zip指示客户端下载文件
*****Set-Cookie:SS=Q0=5Lb_nQ; path=/search服务器端发送的Cookie会话技术有关
*控制客户端不要缓存内容的
Expires: -1
Cache-Control: no-cache (1.1)
Pragma: no-cache (1.0)
..... 响应正文:第一个空行之后的全部都是响应正文
浏览器显示的就是正文中的内容
本文版权归传智播客Android培训学院所有,欢迎转载,转载请注明作者出处。谢谢!
作者:传智播客Android培训学院
首发:http://www.itcast.cn/Android