http知識梳理1

2022-03-27 13:57:36 字數 3040 閱讀 9738

計算機中的協議和現實中的協議是一樣的,一式雙份或多份,雙方多方都遵從共同的乙個規範,這個規範就可以稱為協議。

例如: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關鍵字,讀取器和設定器都會被解析。...