HTTP学习(网上总结)

制作一个非常简单的网页,它的内容只有一行:
<html>
    <body>
       hello world
    </body>
</html>

HEAD /index.htm HTTP/1.1
Host: www.baidu.com:8080
Connection: close


把它放在WEB服务器上,比如IIS,然后用IE浏览器请求这个页面(http://localhost:8080/simple.htm)
我们请求这个页面时,浏览器实际上做了如下4个工作:
1.解析输入的地址:
    协议名:http
    主机名:localhost
        端口:8080
     对象路径:simple.htm
2.把以上部分结合本机自己的信息,封装成一个HTTP请求数据包.
3.使用TCP协议链接到主机的指定端口(localhost, 8080),并发送已封装好的数据包.
4.等待服务器返回数据,并解析返回数据,最后显示出来.

//截取数据包,发现浏览器生成的HTTP数据包的内容如下:
GET /simple.htm HTTP/1.1 <CR> //GET的消息没有消息体,POST消息是有消息体的
Accept:image/gif,image/x-xbitmap,image/jpeg,image/pjpeg,application/x-shockwave-flash,application/vnd.ms-

excel,application/vnd.ms-powerpoint,application/msword,*/*<CR>//Accept表示我们所用浏览器所能接受的content-type
Accept-Language:zh-cn<CR>//语言
Accept-Encoding:gzip,deflate<CR>//编码信息
User-Agent:Mozilla/4.0(compatible;MSIE 6.0;Windows NT5.1;SV1;.NET CLR 1.1.4322;.NET CLR 2.0.50727)<CR>
//显示出本机的相关信息,包括浏览器类型,操作系统信息等.很多网站可以显示出你所使用的浏览器和操作系统版本,就是从这获取.
Host:localhost:8080<CR>//我们所请求的主机:端口
Connection:Keep-Alive<CR>//数据传完并不立即关闭连接.
<CR>//这一行是空行+回车是HTTP规定的消息头和消息体的分界线,第一个空行以下的内容就是消息体,这个请求数据包是没有
消息体的.

服务器发回的完整的HTTP消息如下:
HTTP/1.1 200 OK<CR> //200 表示成功 404 表示对象未找到 500服务器错误 403不能浏览目录
Server:Microsoft-IIS/5.1<CR>//这个服务器使用的web软件
X-Powered-By:ASP.NET<CR>//附加提示,没什么用处
Date:Fri,03 Mar 2006 06:34:03 GMT<CR>
Content-Type:text/html<CR>//返回消息的content-type,浏览器根据它来决定如何处理消息体里面的内容.html就用HTML解析器
                           JPEG就会使用jpeg的解码器来处理.
Accept-Ranges:bytes<CR>
Last-Modified:Fri,03 Mar 2006:33:18 GMT<CR>
ETag:"5ca4f75b8c3ec61:9ee"<CR>
Content-Length:37<CR>//消息体长度,从空行以后的内容算起,以字节为单位.浏览器接受它指定的字节数的内容后就认为这个消息
               已经被完整接收了.
<CR>//也是用空行切分消息头和消息体两部分
<html><body>hello world</body></html>

常见的HTTP返回码
1.403 Access Forbidden 如果我们试图请求服务器上的一个文件夹啊,而在WEB服务器上这个文件夹没有允许对这个文件夹目录
的话,就会返回这个代码.
HTTP/1.1 403 Access Forbidden
Server:Microsoft-IIS/5.1
Date:Mon,06 Mar 2006 08:57:39 GMT
Connection:close
Content-Type:text/html
Content-Length:172
<CR>
<html><head><title>Directory Listing Denied</title></head>
<body><h1>Directory Listing Denied</h1>This Virtual Directory does not allow contents to be listed.</body></html>

2 404 Access Denied WEB服务器不允许匿名访问,而我们又没有提供正确的用户名/密码时,服务器就会给出这个状态码。
HTTP/1.1 401 Access Denied
Server:Microsoft-IIS/5.1
Date:Mon, 06 Mar 2006 09:15:55 GMT
WWW-Authenticate:Negotiate
WWW-Authenticate:NTLM
Connection:close
Content-Length:3964
Content-Type:text/html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html dir=itr>
...
在我们输入了用户名和密码后,服务器与客户端回再进行两次回话,首先,客户端向服务器索取一个公钥,服务器端会返回一个
BASE64编码,相应的消息如下:
GET HTTP/1.1
Accept:image/gif,image/x-xbitmap,image/jpeg,image/pjpeg,application/x-shockwave-flash...
Accept-Language:zh-cn
Accept-Encoding:gzip,deflate
User-Agent:Mozilla/4.0(compatible;MSIE 6.0;Windows NT 5.1;SV1;.NET CLR 1.1.4322;.NET CLR 2.0.50727)
Host:192.168.0.55:8080
Connection:Keep-Alive
Authorization:Negotiate ABCDEF..

HTTP/1.1 401 Access Denied
Server:Microsoft-IIS/5.1
Date:Mon, 06 Mar 2006 09:20:53 GMT
WWW-Authenticate:Negotiate HIJK...
Content-Length:3715
Content-Type:text/html

<!DOCTYPE=HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html dir=itr>
...
客户端拿到公钥后使用公钥对用户名和密码进行加密,然后把加密以后的结果重新发给服务器:
GET HTTP/1.1
...
//如果验证通过,服务器端就会把请求的内容发送过来了.

4.302 Object Moved
ASP页面重定向至少有Redirect(客户端重定向)和Transfer(服务器端重定向)两种方法.
5.500 Internal Server Error
500号错误发生在服务器程序有错误的时候.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值