1 Http的Get请求和Post请求的区别
-
get是从服务器获取数据,post是发送数据到服务器。
-
get参数通过URL传递,post参数放在Request body中。
所以:get比post更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
所以:get的url可以存为书签,post的url不可以存为书签。 -
GET请求在URL中传送的参数是有长度限制的,而POST没有。
-
对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
-
GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
-
GET请求会被浏览器主动cache,而POST不会,除非手动设置。
-
GET在浏览器回退时是无害的,而POST会再次提交请求。
-
GET产生一个TCP数据包;POST产生两个TCP数据包。(在Firefox中post只发送一个)
解释:对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
GET | POST | |
数据传送方式 | 从服务器获取数据 | 发送数据到服务器 |
参数传递方式 | 通过URL传递 | 放在Request body中 |
可否存为书签 | 可以 | 不可以 |
安全性 | 不安全 | 安全 |
URL中参数长度 | 有限制 | 没限制 |
对参数的数据类型 | 只接受ASCII字符 | 没有限制 |
参数保存在浏览器历史记录? | 保留 | 不保留 |
浏览器主动cache | 会 | 不会 |
后退按钮/刷新 | 无害 | 数据会被重新提交(浏览器应该告知用户数据会被重新提交)。 |
数据包个数 | 1个 | 2个(Firefox除外) |