Python面試題: Post和get區(qū)別?
1、GET請求,請求的數(shù)據(jù)會附加在URL之后,以?分割URL和傳輸數(shù)據(jù),多個參數(shù)用&連接。URL的編碼格式采用的是ASCII編碼,而不是unicode,即是說所有的非ASCII字符都要編碼之后再傳輸。
POST請求:POST請求會把請求的數(shù)據(jù)放置在HTTP請求包的包體中。上面的item=bandsaw就是實際的傳輸數(shù)據(jù)。
因此,GET請求的數(shù)據(jù)會暴露在地址欄中,而POST請求則不會。
2、傳輸數(shù)據(jù)的大小
在HTTP規(guī)范中,沒有對URL的長度和傳輸?shù)臄?shù)據(jù)大小進(jìn)行限制。但是在實際開發(fā)過程中,對于GET,特定的瀏覽器和服務(wù)器對URL的長度有限制。因此,在使用GET請求時,傳輸數(shù)據(jù)會受到URL長度的限制。
對于POST,由于不是URL傳值,理論上是不會受限制的,但是實際上各個服務(wù)器會規(guī)定對POST提交數(shù)據(jù)大小進(jìn)行限制,Apache、IIS都有各自的配置。
3、安全性
POST的安全性比GET的高。這里的安全是指真正的安全,而不同于上面GET提到的安全方法中的安全,上面提到的安全僅僅是不修改服務(wù)器的數(shù)據(jù)。比如,在進(jìn)行登錄操作,通過GET請求,用戶名和密碼都會暴露再URL上,因為登錄頁面有可能被瀏覽器緩存以及其他人查看瀏覽器的歷史記錄的原因,此時的用戶名和密碼就很容易被他人拿到了。除此之外,GET請求提交的數(shù)據(jù)還可能會造成Cross-site request frogery攻擊。