计算机网络面试题(十三):HTTP请求中:GET和POST区别

计算机网络面试题(十三):HTTP请求中:GET和POST区别
计算机网络面试题(十三):HTTP请求中:GET和POST区别


HTTP操作中包含了许多方法,其中GET和POST方法是最常用的(不夸张,99%的情况都在用)

区别一:用途不同

  • GET:一般用于请求

例如:你在浏览器地址栏输入一个URL,其实是发送了一个请求,请求服务器的某个资源

  • POST:一般用于表单提交

表单就是浏览器和服务器之间的数据传输装备。POST相当于将信息提交给服务器,然后等待服务器响应

  1. GET方法类似于pull(拉):从服务器拉资源下来
  2. 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数据报
  1. 浏览器先发送header,等待服务器响应100 continue
  2. 浏览器再发送form,服务器响应200 OK