计算机网络面试题(十三):HTTP请求中:GET和POST区别
HTTP操作中包含了许多方法,其中GET和POST方法是最常用的(不夸张,99%的情况都在用)
区别一:用途不同
- GET:一般用于请求
例如:你在浏览器地址栏输入一个URL,其实是发送了一个请求,请求服务器的某个资源
- POST:一般用于表单提交
表单就是浏览器和服务器之间的数据传输装备。POST相当于将信息提交给服务器,然后等待服务器响应
- GET方法类似于pull(拉):从服务器拉资源下来
- POST方法类似于push(推):将数据推给服务器
区别二:安全性不同
- GET:不安全,GET的请求是明文传输,简而言之就是你的请求信息是直接跟在URL后面的,用户都看得到
例如:
……/index/demo_form.asp?name='Y'&passwords='123'
账户信息直接显示出来了
- POST:安全,POST方法会将信息放在请求体body中,用户是看不到的
POST ……/index/demo_form.asp HTTP/1.1
HOST:……
name=‘Y’&passwords=‘123’
信息不对外公开
区别三:数据长度限制
- GET:对传输的数据长度有限制
因为其是明文传输,总不能让URL很长很长吧
- POST:对数据长度没有限制,因为数据都是放在消息体中的
区别四:是否会自动缓存
- GET:GET请求会被浏览器自动缓存
- POST:缓存需要手动设置
区别五:反复操作
-
GET:GET请求在浏览器反复的
回退/前进
是无害的 -
POST:一旦
回退
则要重新提交表单
区别六:TCP数据报
- GET:GET请求会在发送过程中产生一个TCP数据报
浏览器会将http header和数据data一起发送出去,服务器响应200(返回请求的数据)
- POST:POST在提交过程中会产生两个TCP数据报
- 浏览器先发送header,等待服务器响应
100 continue
- 浏览器再发送form,服务器响应
200 OK