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號錯誤發生在服務器程序有錯誤的時候.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章