web掃盲專題之入門概念
. http協議 除了TCP/IP協議,http可以說是最重要,且使用最多的 網絡 協議了。本節簡要介紹一下http協議的工作原理。 假設現在有一個html文件:http.html, 存放在Web 服務器 上,其URL為www.myweb.com/http.html ,文件內容為: HTML 代碼: html head titlehttp.
. http協議
除了TCP/IP協議,http可以說是最重要,且使用最多的
網絡協議了。本節簡要介紹一下http協議的工作原理。
假設現在有一個html文件:http.html, 存放在
Web服務器上,其URL為www.my
web.com/http.html ,文件內容為:
HTML 代碼:
<html>
<head>
<title>http.html</title>
</head>
<body>
hello, http
</body>
</html>
現在,一個用戶通過IE訪問該地址,IE首先將此地址的域名通過DNS轉換為一個IP地址,然后通過一個Web
服務器開放的端口(默認為80,不為80需在域名后加上“:端口號”,例如www.myweb.com:81)與其連接, 然后傳送一個類似這樣的http請求(使用flashget等
下載軟件
下載文件時,在詳細信息里也可以看到類似的信息):
GET /http.html HTTP/1.1
Host: www.myweb.com
Accept: */*
User-Agent: Mozilla/4.0 (compatible; MSIE.6.0;
Windows NT 5.1)
Pragma: no-cache
Cache-Control: no-cache
Connection: close
[空行]
請求的第一行為請求內容, 表示通過GET方法向服務器請求資源,/http.html為請求資源名稱,HTTP/1.1 表示使用http協議,版本1.1。然后接下來的幾行稱為請求信息的標頭(header),其中描述了請求的一些其他信息,比如客戶端瀏覽器標識等。最后一個空行表示請求結束。
當Web服務器接收到該請求時,服務器檢查所請求的資源是否有效,且是否有相應的權限。如果沒有問題,則服務器會傳回類似如下的http響應信息:
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Thursday, March 31, 2005 17:15:23 GMT
Content-Type: text/html
Content-Length: 88
[空行]
<html>
<head>
<title>http.html</title>
</head>
<body>
hello, http
</body>
</html>
其中第一行的“200”是一個狀態碼,表示服務器成功完成該請求,如果不成功會返回其他狀態碼。Content-Type表示返回的數據類型,Content-Length表示返回的數據長度??招斜硎緲祟^結束,下面則是瀏覽器根據請求返回的數據內容,這里是http.html的文件內容,瀏覽器解析html源代碼,將Web頁面呈現給用戶,到這里就完成了一次成功的http通信。
以上內容是Web通信的基礎,就和Windows消息機制一樣,你可能不會用到它,但是你必須了解它,你得知道那些高級的東西隱藏了哪些低級的內容,這樣對你理解和使用那些高級的東西都有非常大的幫助:)。
2. html form
前面的http.html文件是一個最簡單的靜態html頁面,但作為一個Web程序,它實在是太簡陋了,它不接受用戶輸入,永遠顯示一樣的內容。我們需要能夠根據用戶輸入來返回相應的數據。
看下面的html代碼:
<html>
<head>
<title>form.html</title>
</head>
<body>
<form method=”get”>
<input type=”text” name=”p” />
<input type=”submit” value=”submit” />
</form>
</body>
</html>
觀察這段代碼,其中有一個html form,其內容包括在<form>和</form>之間, 其中有一個提交按鈕(<input type=”submit” value=”submit” />),當用戶點擊該按鈕時,瀏覽器將html form中的所有輸入提交給Web服務器,form標簽的method屬性指定了提交的方式,這里為get,這個get對應http請求中的GET請求方法,form中的輸入均以查詢字符串的方式附加在URL上, 在文本框里輸入一個字符串,比如“form”,然后觀察瀏覽器的地址欄,會變成類似 http://www.myweb.com/form.html?p=form ,這是因為瀏覽器發出了這樣的GET請求:
GET /form.html?p=form HTTP/1.1
...
...
[空行]
假如<form>標簽的method屬性為”post”,即令瀏覽器使用post方法發送該請求,當使用post方法時,用戶的輸入并不是通過URL來傳輸的,而是瀏覽器將內容放在POST請求的標頭之后發送給Web服務器的:
POST /form.html HTTP/1.1
...
...
Content-Type: application/x-www-form-urlencoded
Content-Length: 6
[空行]
p=form
瀏覽器將用戶輸入使用GET或者POST方法發送給Web服務器,這個過程稱為“回發(Postback)”。這個概念相當重要,在Web應用程序中經常涉及到回發。
原文轉自:http://www.kjueaiud.com