隨著做的項目越來越多,越來越感覺到HTTP這個東西的重要性。今天把基礎(chǔ)的知識總結(jié)一下。
1xx:指示信息--表示請求已接受,繼續(xù)處理
2xx:成功--表示請求已被成功接受、理解、接受
3xx:重定向--要求完成請求必須進行更進一步的操作
4xx:客戶端錯誤--請求有語法錯誤或請求無法實現(xiàn)
5xx:服務(wù)器端錯誤--服務(wù)器未能實現(xiàn)合法的請求
200 OK? ? ? ? ? ? ? ? ? ? ? ? //客戶端請求成功
400 Bad Request? ? ? ? ? ? ? //客戶端請求有語法錯誤,不能被服務(wù)器所理解
401 Unauthorized? ? ? ? ? ? ? //請求未經(jīng)授權(quán),這個狀態(tài)代碼必須和WWW-Authenticate報頭域一起使用
403 Forbidden? ? ? ? ? ? ? ? //服務(wù)器收到請求,但是拒絕提供服務(wù)
404 Not Found? ? ? ? ? ? ? ? //請求資源不存在,eg:輸入了錯誤的URL
500 Internal Server Error? ? //服務(wù)器發(fā)生不可預期的錯誤
502 Bad Gateway是指錯誤網(wǎng)關(guān)? ? //php語言中語法錯誤 通常也會返給頁面這個錯誤
503 Server Unavailable? ? ? ? //服務(wù)器當前不能處理客戶端的請求,一段時間后可能恢復正常
HTTP工作原理
1,瀏覽器向DNS服務(wù)器請求解析該URL中的域名所對應(yīng)的IP地址;
2, 解析出IP地址后,根據(jù)該ip地址和默認端口80,和服務(wù)器建立TCP鏈接;
3,瀏覽器發(fā)出讀取文件的http請求,該請求保文作為tcp三次握手的第三個報文發(fā)給服務(wù)器;
4,服務(wù)器對瀏覽器作出響應(yīng),并把對應(yīng)的html文本發(fā)給瀏覽器
5,釋放tcp鏈接(若connection 模式為close,則服務(wù)器主動關(guān)閉TCP連接,客戶端被動關(guān)閉連接,釋放TCP連接;若connection 模式為keepalive,則該連接會保持一段時間,在該時間內(nèi)可以繼續(xù)接收請求);
6,瀏覽器拿到html文本并顯示內(nèi)容
GET和POST請求的區(qū)別,
1,GET提交的數(shù)據(jù)會放在URL之后,以?分割URL和傳輸數(shù)據(jù),參數(shù)之間以&相連,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的數(shù)據(jù)放在HTTP包的Body中.
2,GET提交的數(shù)據(jù)大小有限制(因為瀏覽器對URL的長度有限制),而POST方法提交的數(shù)據(jù)沒有限制.
3,GET方式需要使用Request.QueryString來取得變量的值,而POST方式通過Request.Form來獲取變量的值。
4,GET方式提交數(shù)據(jù),會帶來安全問題,比如一個登錄頁面,通過GET方式提交數(shù)據(jù)時,用戶名和密碼將出現(xiàn)在URL上,如果頁面可以被緩存或者其他人可以訪問這臺機器,就可以從歷史記錄獲得該用戶的賬號和密碼.