httpGet和httpPost区别

简单讲讲:

  • Get一般用于从服务器取数据,而且不改变原来的内容;
  • Post一般用于向服务器传递数据,这需要改变服务器的内容。
  • 从安全性上考虑,Get的安全性要稍微差点,因为它会把信息直接在地址栏显示出来。但如果对信息的安全性要求比较高的话,优先考虑使用Post。
  • 综合,如果没有特殊需要,用Get,方便

下面详细讲讲~

  HTTP最早被用来做浏览器与服务器之间交互HTML和表单的通讯协议;后来又被被广泛的扩充到接口格式的定义上。根据 HTTP 规范,GET 用于信息获取,而且应该是 安全的和 幂等的。所谓安全的意味着该操作用于获取信息而非修改信息。换句话说,GET 请求一般不应产生副作用。幂等的意味着对同一 URL 的多个请求应该返回同样的结果。完整的定义并不像看起来那样严格。从根本上讲,其目标是当用户打开一个链接时,她可以确信从自身的角度来看没有改变资源。比如,新闻站点的头版不断更新。虽然第二次请求会返回不同的一批新闻,该操作仍然被认为是安全的和幂等的,因为它总是返回当前的新闻。反之亦然。POST 请求就不那么轻松了。POST 表示可能改变服务器上的资源的请求。

  HTTP定义了与服务器交互的不同方法,其中最基本的四种:GET,POST,PUT,DELETE ,HEAD,其中GET和HEAD被称为安全方法,因为使用GET和HEAD的HTP请求基本不产生什么动作,就意味着GET和HEAD的HTTP请求不会子啊服务器上产生任何结果。但是安全方法并不是什么动作都不产生,这里的安全方法仅仅指不会修改信息。

最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。

  

为什么get比比post更快

1.post请求包含更多的请求头
因为post需要在请求的body部分包含数据,所以会多了几个数据描述部分的首部字段(如: content-type),这其实是微乎其微的.

⒉post在真正接收数据之前会先将请求头发送给服务器进行确认,然后才真正发送数据
post请求的过程:
(1)浏览器请求tcp连接((第一次握手)

(2)服务器答应进行tcp连接(第二次握手)

(3)浏览器确认,并发送post请求头(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)

(4)服务器返回100 Continue响应

(5)浏览器发送数据

(6)服务器返回200 OK响应

get请求的过程:

(1)浏览器请求tcp连接(第一次握手)

(2)服务器答应进行tcp连接(第二次握手)

(3)浏览器确认,并发送get请求头和数据(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)

(4)服务器返回200 OK响应

3.get会将数据缓存起来,而post不会

面试是一般怎么回答get和post的区别
(1) post更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中)

(2) post发送的数据更大(get有url长度限制)

(3) post能发送更多的数据类型(get只能发送AsCl字符)

(4) postt比get慢(其实差不了多少)

(5) post用于修改和写入数据,get一般用于搜索排序和筛选之类的操作(淘宝,支付宝的搜索查询都是get提交),目的是资源的获取,读取数据

 

posted @ 2023-08-18 21:03  小雨转晴被占用了  阅读(41)  评论(0编辑  收藏  举报