GET和POST缓存问题

@kvkens 2018-12-18 06:05:02发表于 iuap-design/blog documentation

最近项目期间,组员竟然还在给POST加随机数,我方的很,所以科普一下基础知识

1. 区别

image

2. get和post区别的缓存问题

首先要了解什么是缓存。

  • HTTP缓存的基本目的就是使应用执行的更快,更易扩展,但是HTTP缓存通常只适用于idempotent request(可以理解为查询请求,也就是不更新服务端数据的请求),这也就导致了在HTTP的世界里,一般都是对Get请求做缓存,Post请求很少有缓存。

  • get多用来直接获取数据,不修改数据,主要目的就是DB的search语句的感觉。用缓存(有个代理服务器的概念)的目的就是查db的速度变快

  • post则是发送数据到服务器端去存储。类似db里的update delete和insert语句的感觉。更新db的意思。数据必须放在数据库,所以一般都得去访问服务器端。

3. 安全问题

  • get请求参数在url中,即传送的数据是在链接里面可看到,有安全问题
  • post参数不是在url里面而是在请求体中,因此安全性较get高

4. 安全问题Get请求的最大长度

各浏览器HTTP Get请求URL最大长度并不相同,几类常用浏览器最大长度及超过最大长度后提交情况如下:

  • IE6.0 :url最大长度2083个字符,超过最大长度后无法提交
  • IE7.0 :url最大长度2083个字符,超过最大长度后仍然能提交,但是只能传过去2083个字符
  • firefox 3.0.3 :url最大长度7764个字符,超过最大长度后无法提交
  • Opera 9.52 :url最大长度7648个字符,超过最大长度后无法提交
  • Google Chrome 2.0.168 :url最大长度7713个字符,超过最大长度后无法提交