計算機中的協議和現實中的協議是一樣的,一式雙份或多份,雙方多方都遵從共同的乙個規範,這個規範就可以稱為協議。
例如:ftp,http,stmp,pop,tcp/ip協議,離婚協議
http協議即按一定規則,向伺服器要資料,或傳送資料,而伺服器按一定規則,回應資料
請求:
請求行:方法,路徑,請求版本
請求頭資訊
空行請求主體資訊(可以沒有)
請求行:
請求方法
請求路徑
所用協議
請求方法
getpost
putdelete
trace
options
問:瀏覽器能傳送http協議,http協議一定要瀏覽器傳送嗎?
答:不是,http既然是一種協議,那麼只要滿足這種協議,什麼工具都可以發
請求方法有哪些?
get,post,head,put,trace,delete,options
注意:這些請求方法雖然http協議裡規定的,但web伺服器未必支援
head和get基本一致,只是返回內容
比如我們只是確認乙個內容(比如**)還存不存在,**不需要返回**的內容**,這時候用head比較合適
trace:是你用了**上網,比如**訪問news.163.con,你想看看**有沒有修改你的http請求,可以用trace來測試一下,news.163.con的伺服器就會把最後收到的請求返回給你
options:是返回伺服器可用的請求方法
1、put和post
put和pos都有更改指定uri的語義.但put被定義為idempotent的方法,post則不是.idempotent的方法:如果乙個方法重複執行多次,產生的效果是一樣的,那就是idempotent的。
put請求:如果兩個請求相同,後乙個請求會把第乙個請求覆蓋掉。(所以put用來改資源)
post請求:後乙個請求不會把第乙個請求覆蓋掉。(所以post用來增資源)
get和post
1、get引數通過url傳遞,post放在request body中。
2、get請求會被瀏覽器主動cache,而post不會,除非手動設定。
3、get請求引數會被完整保留在瀏覽器歷史記錄裡,而post中的引數不會被保留。
4、get 請求中有非 ascii 字元,會在請求之前進行轉碼,post不用,因為post在request body中,通過 mime,也就可以傳輸非 ascii 字元。
6、http的底層是tcp/ip。http只是個行為準則,而tcp才是get和post怎麼實現的基本。get/post都是tcp鏈結。get和post能做的事情是一樣一樣的。但是請求的資料量太大對瀏覽器和伺服器都是很大負擔。所以業界有了不成文規定,(大多數)瀏覽器通常都會限制url長度在2k個位元組,而(大多數)伺服器最多處理64k大小的url。
7、get產生乙個tcp資料報;post產生兩個tcp資料報。對於get方式的請求,瀏覽器會把http header和data一併傳送出去,伺服器響應200(返回資料);而對於post,瀏覽器先傳送header,伺服器響應100 continue,瀏覽器再傳送data,伺服器響應200 ok(返回資料)。
8、在網路環境好的情況下,發一次包的時間和發兩次包的時間差別基本可以無視。而在網路環境差的情況下,兩次包的tcp在驗證資料報完整性上,有非常大的優點。但並不是所有瀏覽器都會在post中傳送兩次包,firefox就只傳送一次。
狀態碼:是用來反應伺服器響應情況的
最常見的如:200 ok,404 not fount
狀態文字:是用來描述狀態碼的,便於人觀察
狀態碼定義
說明1xx
資訊接收請求,繼續處理
2xx成功
操作成功地收到,理解和接受
3xx重定向
為了完成請求,必須採取進一步的措施
4xx客戶端錯誤
請求的語法有錯誤或不能完全被滿足
5xx服務端錯誤
伺服器無法完成明顯有效的請求
200-伺服器成功返回網頁
301/302-永久/臨時重定向
304-未修改(取的快取)
404-請求的網頁不存在
503-伺服器暫時不可用
500-伺服器內部錯誤
jvm知識梳理1
關於記憶體分配 1.jvm的記憶體氛圍堆記憶體和非堆記憶體,重點來說堆記憶體。2.堆記憶體中有兩個地方,乙個是年輕代,即young,乙個是老年代,即old,這兩個區域的大小比例為1 3。3.在年輕代中又分為三個部分,乙個eden 伊甸園 區域,兩個survivor 倖存者 區域,s0和s1,它們的大...
前端知識重新梳理 1
先上定義 display block 塊級元素 1,每個塊級元素會獨佔一行 2,缺省會自動填滿父級寬度 3,塊級元素可以設定padding和margindisplay inline 內聯元素 1,內聯元素不會獨佔一行,多個相鄰的內聯元素會排列在同一行裡,直到一行排列不下,才會新換一行,其寬度隨元素的...
IOS基礎知識梳理(1)
readwrite,readonly,assign,retain,copy,nonatomic等等屬性的作用?readwrite 此標記說明屬性會被當成讀寫的,這也是預設屬性。設定器和讀取器都需要在 implementation中實現。如果使用 synthesize關鍵字,讀取器和設定器都會被解析。...