面试中经常会遇到,工作应用中也经常容易混淆的问题:get和post的区别?
其实,在正常使用中,很容易遇到的困惑就是这个请求使用 get 和 post 都可以,而且基本上的场景中get和post都是可以互换的。
那么,get和post区别在哪里呢?
- get的参数是拼接在url中,参数是直接可见的,而post是将参数放入body中,在url中不能直接看到;post并不比get安全性更高,只是post的参数需要抓包才可以看到。
- get请求可以缓存,post请求不可以缓存;
- 在前端页面中get请求的页面后退时没有影响,post请求的页面后退时需要重新提交参数;
- get传输数据有大小限制(根据浏览器限制,大小不一,2~4K),post传输数据的大小限制可以大很多,具体上限,取决于服务器的接口配置限制;
更深入一些说,实际上前面说的那些 get 和post的区别都是表现,get和post的在HTTP规范中的语义不同。
get 用来获取响应内容;post用来传输实体,不以获取响应做主要目的。
而HTTP规范说白就是一套约定的准则,并不是一个强约束的语法。所以在实际应用中get 和 post经常会被混用。
再进一步说,基于这个HTTP规范 get和post的语义,各大浏览器、网络框架,也会有一些细微的约束差别,有些约束严格,有些约束宽松,导致get、post混用的局面。
网友评论