網(wǎng)絡(luò)通信過程

url:同一資源定位符,客戶端通過URL地址找到服務(wù)器端
網(wǎng)絡(luò)請求的兩個部分:請求和響應(yīng)
請求:(請求頭 + 請求體)客戶端向服務(wù)器索要數(shù)據(jù)的行為;
響應(yīng):(響應(yīng)頭 + 響應(yīng)體)服務(wù)器向客戶端返回數(shù)據(jù)的行為;

請求的組成部分
(1)請求頭(存放的是對客戶端以及請求本身的描述信息);
(2)請求體(如果是POST請求,則存放發(fā)送給服務(wù)器的參數(shù));
響應(yīng)的組成部分
(1)響應(yīng)頭(存放的是服務(wù)器端以及已經(jīng)響應(yīng)本身的描述信息);
(2)響應(yīng)體(返回給客戶端的具體數(shù)據(jù));
(3)響應(yīng)行(響應(yīng)狀態(tài)碼 + 原因短語);

請求頭可能包含的信息:

1.  User-Agent:瀏覽器的具體類型  如:User-Agent:Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20100101 Firefox/17.0
2.  Accept:瀏覽器支持哪些數(shù)據(jù)類型  如:Accept: text/html,application/xhtml+xml,application/xml;q=0.9;
3. Accept-Charset:瀏覽器采用的是哪種編碼  如:Accept-Charset: ISO-8859-1
4. Accept-Encoding:瀏覽器支持解碼的數(shù)據(jù)壓縮格式  如:Accept-Encoding: gzip, deflate
5. Accept-Language:瀏覽器的語言環(huán)境  如:Accept-Language zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
6. Host:請求的主機名,允許多個域名同處一個IP地址,即虛擬主機。Host:www.520it.com
7. Connection:表示是否需要持久連接。Keep-Alive/close,HTTP1.1默認是持久連接,它可以利用持久連接的優(yōu)點,當頁面包含多個元素時(例如Applet,圖片),顯著地減少下載所需要的時間。要實現(xiàn)這一點,Servlet需要在應(yīng)答中發(fā)送一個Content-Length頭,最簡單的實現(xiàn)方法是:先把內(nèi)容寫入ByteArrayOutputStream,然后在正式寫出內(nèi)容之前計算它的大小。如:Connection: Keep-Alive
8. Content-Length:表示請求消息正文的長度。對于POST請求來說Content-Length必須出現(xiàn)。
9. Content-Type:WEB服務(wù)器告訴瀏覽器自己響應(yīng)的對象的類型和字符集。例如:Content-Type: text/html; charset='gb2312'
10. Content-Encoding:WEB服務(wù)器表明自己使用了什么壓縮方法(gzip,deflate)壓縮響應(yīng)中的對象。例如:Content-Encoding:gzip
11. Content-Language:WEB服務(wù)器告訴瀏覽器自己響應(yīng)的對象的語言。
12. Cookie:最常用的請求頭,瀏覽器每次都會將cookie發(fā)送到服務(wù)器上,允許服務(wù)器在客戶端存儲少量數(shù)據(jù)。
13. Referer:包含一個URL,用戶從該URL代表的頁面出發(fā)訪問當前請求的頁面。服務(wù)器能知道你是從哪個頁面過來的。Referer: http://www.baidu.com/

響應(yīng)頭可能包含的信息:

1. Server:WEB 服務(wù)器表明自己是什么軟件及版本等信息。例如:Server:Apache/2.0.61 (Unix)
2. Accept-Ranges:WEB服務(wù)器表明自己是否接受獲取其某個實體的一部分(比如文件的一部分)的請求。bytes:表示接受,none:表示不接受
3. Content-Type:WEB 服務(wù)器告訴瀏覽器自己響應(yīng)的對象的類型。例如:Content-Type:application/xml
4. Etag:就是一個對象(比如URL)的標志值,就一個對象而言,比如一個html文件,如果被修改了,其Etag也會別修改,所以,ETag的作用跟Last-Modified的作用差不多,主要供WEB服務(wù)器判斷一個對象是否改變了。比如前一次請求某個html文件時,獲得了其 ETag,當這次又請求這個文件時,瀏覽器就會把先前獲得ETag值發(fā)送給WEB服務(wù)器,然后WEB服務(wù)器會把這個ETag跟該文件的當前ETag進行對比,然后就知道這個文件有沒有改變了。
5. Allow:服務(wù)器支持哪些請求方法(如GET、POST等)
6. Location:表示客戶應(yīng)當?shù)侥睦锶ヌ崛∥臋n,用于將接收端定位到資源的位置(URL)上。Location通常不是直接設(shè)置的,而是通過HttpServletResponse的sendRedirect方法,該方法同時設(shè)置狀態(tài)代碼為302。
7. Content-Base:解析主體中的相對URL時使用的基礎(chǔ)URL。
8. Content-Encoding:WEB服務(wù)器表明自己使用了什么壓縮方法(gzip,deflate)壓縮響應(yīng)中的對象。例如:Content-Encoding:gzip
9. Content-Language:WEB 服務(wù)器告訴瀏覽器理解主體時最適宜使用的自然語言。
10. Content-Length:WEB服務(wù)器告訴瀏覽器自己響應(yīng)的對象的長度或尺寸,例如:Content-Length: 26012
11. Content-Location:資源實際所處的位置。
12. Content-MD5:主體的MD5校驗和。
13.Content-Range:實體頭用于指定整個實體中的一部分的插入位置,他也指示了整個實體的長度。在服務(wù)器向客戶返回一個部分響應(yīng),它必須描述響應(yīng)覆蓋的范圍和整個實體長度。一般格式: Content-Range:bytes-unitSPfirst-byte-pos-last-byte-pos/entity-legth。例如,傳送頭500個字節(jié)次字段的形式:Content-Range:bytes0- 499/1234如果一個http消息包含此節(jié)(例如,對范圍請求的響應(yīng)或?qū)σ幌盗蟹秶闹丿B請求),Content-Range表示傳送的范圍,Content-Length表示實際傳送的字節(jié)數(shù)。
14.Expires:WEB服務(wù)器表明該實體將在什么時候過期,對于過期了的對象,只有在跟WEB服務(wù)器驗證了其有效性后,才能用來響應(yīng)客戶請求。是 HTTP/1.0 的頭部。例如:Expires:Sat, 23 May 2009 10:02:12 GMT
15.Last-Modified:WEB服務(wù)器認為對象的最后修改時間,比如文件的最后修改時間,動態(tài)頁面的最后產(chǎn)生時間等等。例如:Last-Modified:Tue, 06 May 2008 02:42:43 GMT

響應(yīng)狀態(tài)碼:具體參考附件。
get請求和post請求
get請求

get請求提交的數(shù)據(jù)可以在地址欄中看到
get請求的數(shù)據(jù)在PHP中可以通過_GET["key"]的形式獲取 如果_GET中沒有key對應(yīng)的值會報錯
post請求

post請求提交的數(shù)據(jù)不會在地址欄中顯示
post請求提交的數(shù)據(jù)在PHP中可以通過_POST["key"]的形式獲取 如果_POST中沒有key對應(yīng)的值會報錯
注意點:

get發(fā)送的請求數(shù)據(jù)不能通過$_POST獲取
get/post區(qū)別

01 安全性

GET請求請求的參數(shù)直接拼接在URL后面發(fā)送給服務(wù)器,可以通過瀏覽記錄來查看,另外如果黑客攻破了服務(wù)器拿到服務(wù)器的訪問日志,那么所有的訪問記錄都會被暴露。
POST請求的請求參數(shù)存放在請求體中傳遞,相對安全。
02 大小限制

get請求:
因為"特定的瀏覽器及服務(wù)器對請求的URL長度有限制",而get請求的參數(shù)又全部拼接在URL后面處理。
所以在使用get方法網(wǎng)絡(luò)請求的時候,對參數(shù)的大小有限制。

post請求:
因為POST不是通過URL提交數(shù)據(jù),所以POST是沒有大小限制。
HTTP協(xié)議規(guī)范也沒有進行大小限制,起限制作用的是服務(wù)器的處理程序的處理能力。
03 請求體

get請求因此所有的參數(shù)都拼接在請求路徑后面,所以沒有請求體
post請求把參數(shù)全部都放在請求體中傳遞。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容