一看到這個(gè)標(biāo)題捧挺,是不是有又起當(dāng)年剛剛接觸web的時(shí)候被get和post支配的恐怖。想當(dāng)年為了面試這個(gè)題的答案都已經(jīng)背爛了:
- GET請(qǐng)求在URL中傳送的參數(shù)是有長度限制的,而POST么有。
- GET比POST更不安全替饿,因?yàn)閰?shù)直接暴露在URL上,所以不能用來傳遞敏感信息贸典。
- GET參數(shù)通過URL傳遞视卢,POST放在Request body中。
- GET請(qǐng)求只能進(jìn)行url編碼廊驼,而POST支持多種編碼方式据过。
- GET請(qǐng)求瀏覽器會(huì)自動(dòng)緩存,且只有IE瀏覽器有這種行為(萬惡的IE瀏覽器啊啊啊岸士妗)绳锅,而POST不會(huì)。
但是如果你覺得POST和GET的淵源只有這些的話饥漫,你就大錯(cuò)特錯(cuò)了榨呆。其實(shí)POST和GET作為我們最常用的兩種請(qǐng)求方式罗标,他們的底層原理其實(shí)是相同的庸队,那就是TCP協(xié)議积蜻。沒錯(cuò),就是那個(gè)需要三次握手的TCP協(xié)議(有關(guān)tcp/ip協(xié)議的知識(shí)可以查看該文章)彻消。那既然他們底層原理是一樣的竿拆,為什么還有這么多區(qū)別呢?其實(shí)這些區(qū)別只是一些約定俗成的規(guī)定宾尚,如果你愿意丙笋,完全可以通過技術(shù)手段來把GET請(qǐng)求的參數(shù)放在請(qǐng)求體中,把POST請(qǐng)求的參數(shù)拼在url上煌贴。但這樣不光增加了工作量御板,還增加了代碼量(我嚴(yán)重懷疑你是為了水工時(shí)才這么干的)。
get請(qǐng)求在IE瀏覽器下自動(dòng)緩存的帶來的問題和解決方案
- 在url后面拼一個(gè)時(shí)間戳牛郑,就是讓每次的get請(qǐng)求不一樣怠肋,也就不會(huì)在cache過期前出現(xiàn)每次請(qǐng)求得到的數(shù)據(jù)都一樣了(淺談瀏覽的緩存問題)。
- 在發(fā)送請(qǐng)求的時(shí)候設(shè)置if-Modifed-Since
具體帶來的問題參考下文
https://blog.csdn.net/newbird105/article/details/44835743