分析URL結(jié)構(gòu)
我們實際應(yīng)該要把瀏覽器與服務(wù)器交互的過程,看作是一個長距離文件傳輸?shù)倪^程,根據(jù)Unix提出的思想,一切皆是文件,服務(wù)器做的事情,只是儲存這些文件,并在我們提出要求時,查詢并找到這些文件,再發(fā)送給客戶端瀏覽器實現(xiàn)渲染的過程。而這些交互過程需要一個統(tǒng)一的規(guī)范,也就是協(xié)議,Internet使用的是HTTP協(xié)議。而傳遞文件前,發(fā)出的請求或做出的回應(yīng),便是請求/回應(yīng)行,這是對用戶查詢行為的一種翻譯。用戶的行為可能體現(xiàn)在與瀏覽器表單的交互,也有可能是直接修改URL。
1.URL的組成部分由 協(xié)議 + 主機(jī)名(:端口(訪問本地時可指定))+文件目錄 組成
例如:http://www.baidu.com/ 可看做是 http協(xié)議 + www.baidu.com主機(jī) +/ 文件目錄組成
在文件目錄中
使用?代表查詢字符,當(dāng)頁面URL出現(xiàn)當(dāng)前字符時,說明發(fā)送或返回到了包含查詢信息的頁面。?q=xxx (q是query即查詢的縮寫,但有的網(wǎng)頁需要使用tx?query=xxx之流)
使用#代表頁面錨點,當(dāng)頁面出現(xiàn)這一部分時,這一部分并沒有和主機(jī)發(fā)生交互,是在客戶端瀏覽器內(nèi)部實現(xiàn)了定位。
2.HTTP協(xié)議?
當(dāng)與服務(wù)器發(fā)生交互時,客戶端會發(fā)送一條請求行,開頭格式為
方法 + 請求的頁面在主機(jī)文件目錄中的位置 +協(xié)議版本
例如:GET /index HTTP/1.1
意思就是查詢 服務(wù)端文件目錄下/index文件 使用HTTP1.1協(xié)議版本?
方法有g(shù)et/post ? ? 文件目錄中不會出現(xiàn)#符號 ?協(xié)議版本可能也會有1.0
3.完成一條請求頭
GET /index HTTP/1.1 方法和文件目錄和版本
Host:www.example.com 請求的主機(jī)位置
User-Agent:chrome 你的代理服務(wù)器/也可以隨便寫
還可以按照自己的意愿再請求頭中加一些自定義內(nèi)容,不過需要遵守格式規(guī)范
4.完成一條回應(yīng)頭
HTTP:/1.1 ?200 OK ? ? ? ? ? ? ? ? ? ? ? ? ? ? 分別對應(yīng) 協(xié)議版本 +狀態(tài)碼+狀態(tài)碼原因
Date:Tue Mar 2012 04:33:33 GMT
Server: Apache/2.2.3 ? ? ? ? ? ? ? ? ? ? ? ? ? ?服務(wù)器版本
Content-type: text/html ? ? ? ? ? ? ? ? ? ? ? ? ?返回的內(nèi)容類型
Content-Length: ?1539 ? ? ? ? ? ? ? ? ? ? ? ? ? 返回的內(nèi)容實體長度
//常見狀態(tài)碼 200 OK 302 Found 404 Not Found 500 Server Error
5.Web Application原理簡析
? ? ? ?在90年代,服務(wù)器中需要返回的頁面資源全部被稱為static靜態(tài)資源,不需要
服務(wù)端的加載,而是預(yù)先寫好的,因而不能存在交互功能,比如,網(wǎng)絡(luò)聊天室,
個人博客等,都無法實現(xiàn),就像上世紀(jì)的地區(qū)黃頁一樣。
? ? ? ?而在如今,需要被訪問的頁面和交互效果都是由動態(tài)請求申請獲取的。因而
他們都是動態(tài)的被加載出來的(build on the fly)。而加載這些動態(tài)頁面,動態(tài)
生成內(nèi)容的媒介,則被稱為網(wǎng)絡(luò)應(yīng)用程序(Web Application)。
6.在查詢有空格的字段時,系統(tǒng)會為空格加上+號
7.使用get方法可以使用緩存,而post方法并沒有,get方法不應(yīng)該改變服務(wù)器
情況,post則被允許可以。