GET | POST | |
---|---|---|
后退/刷新 | 无害的 | 数据会被从新提交 |
书签 | 可收藏为书签 | 不可收藏为书签 |
缓存 | 能被缓存 | 不能缓存 |
编码类型 | application | 多为二进制数据使用多重编码 |
历史 | 会保留参数在历史中 | 不会保存在历史数据中 |
对长度的限制 | 最大为2048 | 无限制 |
对数据类型的限制 | ASCII | 没有限制,也能够为二进制数据 |
安全性 | 安全性较差,敏感数据,密码请勿使用后 | 安全性较高 |
可见性 | 数据在URL中对全部人可见 | 数据不会限制在URL中 |
GET方法参数是固定的么?正则表达式
在约定中咱们的参数是写在?后面,用&分割,解析报文的过程是经过获取TCP数据,用正则表达式等工具获取Header和Body浏览器
GET的长度限制:缓存
浏览器地址栏输入的参数是有限的,Http协议中没有长度限制,对URl的长度限制一般为浏览器或者服务器的缘由安全
POST比GET安全:服务器
由于POST数据在地址栏中不可见, 可是安全只是相对的,由于HTTP在网络中是明文传输的,要想加密,就必需要用HTTPS网络
POST会产生2个TCP数据包?app
POST会将Header和Body分开发送,可是HTTP协议中没有明确会产生2个数据包,并且实际测试的时候也不会分开发送,因此分开发送只是部分浏览器和框架的请求方法,不属于POST的必然行为。框架
请说一下GET和POST二者的本质区别:工具
GET和POST本质上二者没有任何区别。他们都是HTTP协议中的请求方法。底层实现都是基于TCP/IP协议。上述的所谓区别,只是浏览器厂家根据约定,作得限制而已post
HTTP请求,最初设定了八种方法。这八种方法本质上没有任何区别。只是让请求,更加有语义而已。