事實(shí)上GET 和 POST 在實(shí)踐上面有非常大的區(qū)別如失,這兩種方法在語義上面并非能互相取代。
http協(xié)議規(guī)定GET是獲取資源的方法掂之,POST是創(chuàng)建資源的方法脆丁。
POST 是否比 GET 安全是的, POST要比GET安全一點(diǎn)點(diǎn)槽卫,注意,是一點(diǎn)點(diǎn)震蒋。。喷好。
說這兩者都是明文傳送當(dāng)然是沒有錯(cuò)的了,但是這里有一個(gè)細(xì)節(jié)禾唁,就是GET的URL會(huì)被放在瀏覽器歷史和WEB 服務(wù)器日志里面无切。POST 發(fā)完基本就木有了。掘托。所以 如果你把關(guān)鍵數(shù)據(jù)放在GET里面籍嘹,被人偷窺了瀏覽器,或者WEB服務(wù)器被入侵日志被人倒去了泪掀,基本泄露可能性100%颂碘。
而POST來說,日志沒有記錄头岔,只要數(shù)據(jù)庫服務(wù)器不被入侵,基本還是安全的峡竣。當(dāng)然如果被抓了包,這一切都沒有什么卵用孕荠,所以攻谁,HTTPS該用還是得用弯予。
GET 相對 POST 的優(yōu)勢是什么最大的優(yōu)勢是, GET 的URL可以人肉手輸啊受楼。。艳汽。你在地址欄打個(gè)POST給我看看。
本質(zhì)上面河狐, GET 的所有信息都在URL, 所以很方便的記錄下來重復(fù)使用栅干。所以如果你希望
- 請求中的URL可以被手動(dòng)輸入
- 請求中的URL可以被存在書簽里捐祠,或者歷史里,或者快速撥號(hào)里面窿给,或者分享給別人。
- 請求中的URL是可以被搜索引擎收錄的崩泡。
- 帶云壓縮的瀏覽器俏橘,比如Opera mini/Turbo 2, 只有GET才能在服務(wù)器端被預(yù)取的。- 請求中的URL可以被緩存靴寂。
請使用GET. 大家有沒有注意到召耘,其實(shí)這里面很多方面的要求是和網(wǎng)站的運(yùn)營相關(guān)的,而不是技術(shù)相關(guān)的剖踊。任何的技術(shù)行為中衫贬,其實(shí)多多少少都能看到商業(yè)的影子。反之梆造,就用POST. 特別是有一些東西你是不想讓人家可以在瀏覽器地址欄里面可以輸入的葬毫。比如屡穗,如果你設(shè)計(jì)一個(gè)blog系統(tǒng), 設(shè)計(jì)這樣一個(gè)URL來刪掉所有帖子忽肛。http://myblog.com/?action=delete_all
我只能說很快你就知道什么叫不作死就不會(huì)死這個(gè)道理了,搜索引擎的爬蟲分分鐘教你做人础废。另外一個(gè)準(zhǔn)則是煎源,可以重復(fù)的交互,比如取個(gè)數(shù)據(jù)手销,跳個(gè)頁面, 用GET.不可以重復(fù)的操作诈悍, 比如創(chuàng)建一個(gè)條目/修改一條記錄兽埃, 用POST, 因?yàn)镻OST不能被緩存,所以瀏覽器不會(huì)多次提交舷夺。
如果站在傳輸協(xié)議的角度來看 POST 完全可以代替 GET售貌,會(huì)覺得 GET的存在沒有必要。如果站在應(yīng)用協(xié)議的角度颂跨,任何應(yīng)用程序都少不了“增刪改查”功能恒削,HTTP 協(xié)議的方法除了 POST、GET外還有 DELETE和PUT钓丰,他們剛好是對應(yīng)的:POST是添加,DELETE是刪除琢歇,PUT是修改,GET是查詢,至于增刪改查的具體內(nèi)容每個(gè)應(yīng)用都不同尚揣,但是他們都可以用URL定位,內(nèi)容在HTTP里叫做“資源”快骗,所以URL叫“統(tǒng)一資源定位符”。RESTful API 正是按照這種方式來定義的名秀,大家都用 HTTP 協(xié)議提供 API 不是偶然藕溅,而是就是為此而設(shè)計(jì)的。