GET和POST的区别是什么?
- GET一般用于信息获取。使用URL传递参数,对所发送信息的数量也有限制,一般在2000个字符之内。
- POST一般用于修改服务器上的资源,对所发送的信息没有限制。
- GET方式需要使用Request.QueryString来取得变量的值,而POST方式可通过Request.From来获取变量的值。也就是说,GET通过地址栏来传值,而POST通过提交表单来传值(注意!模拟表单的POST请求在jQuery中很常见).
何时使用POST?
- 无法缓存文件(更新服务器上的文件或数据库)。
- 向服务器发送大量数据(POST没有数据量限制)。
- 当发送包含未知字符的内容时,POST比GET更稳定、更可靠。
表单向服务器提交数据的方式有哪几种?
- GET和POST
- 浏览器发送给服务器的HTTP请求分为请求头(header)和请求主体(body)两部分。其中必须包含请求头部分,它用于指定发送请求的方式、目的以及其他关键信息;而主体是可选的。在头数据和主体数据之间用一个空白行隔开。
- 当使用GET方式时,表单数据附加在URL属性的末端。
- 当使用POST方法数据时,数据都会放在主体中。
普通答法
GET
- 倾向于服务器获取数据
- 直接把数据拼接在请求路径的后面(格式:key1=value1&key2=value2)
- 大小限制为2kb左右
- 会被浏览器主动缓存
- 相对于POST不是很安全(明文传输)
- 数据格式必须是url编码格式
POST
- 倾向于向服务器传递数据
- 把数据放在请求主体里面
- 大小理论上没有限制
- 不会被浏览器主动缓存
- 相对于GET是很安全(暗文传输)
- 数据可以是任意格式,但是要和请求头里面的content-type保持一致
深层原理
- GET 和 POST 本质上都是 TCP连接 ,并无差别
- 底层区别简单来说
- GET 产生一个TCP数据包
- POST 产生两个TCP数据包
- 底层区别长的来说
- 对于GET方式的请求,浏览器会把 http header 和 data 一并发送出去,服务器响应200(返回数据)
- 对于POST方式的请求,浏览器先发送 header ,服务器响应 100 continue ,浏览器再发送data,服务器响应 200 ok(返回数据)