Http方法:Get請(qǐng)求與Post請(qǐng)求的區(qū)別
Get是向服務(wù)器發(fā)索取數(shù)據(jù)的一種請(qǐng)求宵膨,而Post是向服務(wù)器提交數(shù)據(jù)的一種請(qǐng)求运杭。
Get是獲取信息蛹头,而不是修改信息院塞,類似數(shù)據(jù)庫(kù)查詢功能一樣遮晚,數(shù)據(jù)不會(huì)被修改。
Get請(qǐng)求適用于安全的交互行為拦止,就是那些你可以反復(fù)發(fā)起請(qǐng)求而不會(huì)帶來副作用的請(qǐng)求县遣。Post請(qǐng)求適用于不安全的互交行為,意思是每一個(gè)請(qǐng)求都會(huì)導(dǎo)致服務(wù)器端發(fā)生某種變化汹族,而重復(fù)請(qǐng)求可能會(huì)帶來問題萧求。
Get請(qǐng)求的參數(shù)會(huì)跟在url后進(jìn)行傳遞,請(qǐng)求的數(shù)據(jù)會(huì)附在URL之后顶瞒,以?分割URL和傳輸數(shù)據(jù)夸政,參數(shù)之間以&相連,%XX中的XX為該符號(hào)以16進(jìn)制表示的ASCII,如果數(shù)據(jù)是英文字母/數(shù)字榴徐,原樣發(fā)送守问,如果是空格,轉(zhuǎn)換為+坑资,如果是中文/其他字符耗帕,則直接把字符串用BASE64加密。
Get傳輸?shù)臄?shù)據(jù)有大小限制袱贮,因?yàn)镚ET是通過URL提交數(shù)據(jù)仿便,那么GET可提交的數(shù)據(jù)量就跟URL的長(zhǎng)度有直接關(guān)系了,不同的瀏覽器對(duì)URL的長(zhǎng)度的限制是不同的攒巍。
GET請(qǐng)求的數(shù)據(jù)會(huì)被瀏覽器緩存起來嗽仪,用戶名和密碼將明文出現(xiàn)在URL上,其他人可以查到歷史瀏覽記錄窑业,數(shù)據(jù)不太安全钦幔。在服務(wù)器端枕屉,用Request.QueryString來獲取Get方式提交來的數(shù)據(jù)常柄。
Post請(qǐng)求則作為http消息的實(shí)際內(nèi)容發(fā)送給web服務(wù)器,數(shù)據(jù)放置在HTML Header內(nèi)提交,Post沒有限制提交的數(shù)據(jù)西潘。Post比Get安全卷玉,當(dāng)數(shù)據(jù)是中文或者不敏感的數(shù)據(jù),則用get喷市,因?yàn)槭褂胓et相种,參數(shù)會(huì)顯示在地址,對(duì)于敏感數(shù)據(jù)和不是中文字符的數(shù)據(jù)品姓,則用post寝并。
POST表示可能修改變服務(wù)器上的資源的請(qǐng)求,在服務(wù)器端腹备,用Post方式提交的數(shù)據(jù)只能用Request.Form來獲取