http訪問中GET和POST的原理解析
1.HTTP有幾種請求方法:
在HTTP1.1中總共定義了8種方法:
在HTTP1.0中,定義了三種請求方法:GET,POST和HEAD方法。
在HTTP1.1中,新增了五種請求方法:OPTINOS,PUT,DELETE,TRACE和CONNECT方法。
但我們常用的就是get和post方法
2.GET和POST兩種請求方法都有哪些區別?
1.get的傳遞引數是放在url中的,而post的請求方式是放在request body中的,所以post比get更安全。
2.get傳遞的引數有大小限制,在2k以下,post引數在2G以下。
3.get請求只能進行url編碼(application/x-www-form-urlencoded),而post支援多種編碼格式
4.get請求會被瀏覽器主動快取,而post不會,除非手動設定。
3.GET請求有request body嗎,如果有的話,可以像post一樣放在裡面嗎?
因為GET和POST都是基於TCP/IP的底層通訊協議,所以在技術上get也是可以加入request body的,但是由於上層的HTTP協議的不同,導致伺服器不一定能夠解析到request body
4.GET請求的引數寫法是固定的嗎?
在約定中我們是將引數寫在?後面,使用&分割,但是也可以自己定義,但是需要伺服器端進行相應的解析處理。
5.POST比GET方法更加安全,這種說法對嗎?
不對,因為HTTP在網路上都是明文傳輸的,所以並不完全安全,如果要安全傳輸,只有加密,也就是使用HTTPS。
6.GET和POST請求傳送的資料包有什麼不同?
GET請求時產生一個TCP資料包,POST請求時產生兩個TCP資料包。
GET:瀏覽器會把http header和data一併傳送過去,伺服器返回200(返回資料)
POST:瀏覽器先發送header,伺服器響應100 connect,瀏覽器再發送data,伺服器響應200 OK(返回資料)