全面比较HTTP GET与POST方法

简介: 全面比较HTTP GET与POST方法

全面比较HTTP GET与POST方法

1.       基本信息比较

属性

GET方法

POST方法

历史:

通常使用GET方法发送的数据作为URL的一部分将会被浏览器保存起来

使用POST方法提交的数据则不会作为URL的一部分,当然不会浏览器保存。

书签:

GET方法可能被浏览器当作书签(bookmark)保存

POST方法则不会

回退与重新提交:

使用GET方法的页面可以被回退并重新执行而不通知用户

POST方法会通知用户再次提交

Form编码类型:

GET提交数据只支持

application/x-www-form-urlencoded

POST支持application/x-www-form-urlencoded与multipart/form-data

参数:

由于GET的参数一般都跟在URL后面,支持的数据大小一般在2K,有些服务器可以支持到64K。这个就是很多网页超过64K就挂掉的真实原因。因为服务器限制了。

发送参数,还可以是文件,大小在理论上没有限制。

被攻击:

GET方法提交数据很容易被黑客攻击,实施脚本绑架。

POST方法相对GET方法不是那么容易被黑客攻击

数据类型限制:

GET方法提交数据只能是文本数据

POST方法则不受限制,二进制文件也可以。

安全性:

GET方法的安全性比POST方法要低一些,原因是数据做为URL的一部分是可见的。而且被浏览器存在历史访问记录中。

POST方法的安全性相对GET要高一些。因为参数数据不能被浏览器作为URL的一部分而存入历史访问记录中。

表单数据长度:

由于表单数据做为URL的一部分而URL长度通常是有限制的。

POST方法没有限制。

可用性:

GET方法通常不被用来发送密码与敏感信息。但是我发现还是有不少网站用GET来实现login。比如XXXX社区,它把login方法放在一个jquery完成JavaScript脚本中,用GET请求完成。

POST方法可以用来发送密码与其他敏感信息。

可见性:

GET方法对所有人可见

POST方法的变量是不可见的在URL中

缓存:

GET方法默认被缓存,这个就是很多时候用GET方法获取数据后面要跟个时间戳的原因

POST方法默认不被缓存。

除非Response头设置了Cache-Control或者Expires属性值。

最大的变量值:

GET支持最大为7607个字符

POST方法支持最大值为8MB

应用场合:

GET最常用的场合是获取数据,浏览器获取网页时候绝大多数通过GET方法实现,大多数浏览器下载也是使用GET方法获取文件

POST主要用来向服务器提交数据。

个人整理与总结,欢迎大家拍砖

相关文章
|
1月前
|
JSON Java 数据安全/隐私保护
java中的http请求的封装(GET、POST、form表单、JSON形式、SIGN加密形式)
java中的http请求的封装(GET、POST、form表单、JSON形式、SIGN加密形式)
|
3天前
|
域名解析 存储 缓存
HTTP请求流程概览:浏览器构建请求行含方法、URL和版本;检查缓存;解析IP与端口
【6月更文挑战第23天】 HTTP请求流程概览:浏览器构建请求行含方法、URL和版本;检查缓存;解析IP与端口;TCP连接(HTTP/1.1可能需排队);三次握手;发送请求头与体;服务器处理并返回响应;TCP连接可能关闭或保持;浏览器接收并显示响应,更新缓存。HTTP版本间有差异。
18 5
|
7天前
|
安全 搜索推荐
基础入门 HTTP数据包&Postman构造&请求方法&请求头修改&状态码判断
基础入门 HTTP数据包&Postman构造&请求方法&请求头修改&状态码判断
|
19天前
|
JSON 安全 Java
JAVA Socket 实现HTTP与HTTPS客户端发送POST与GET方式请求
JAVA Socket 实现HTTP与HTTPS客户端发送POST与GET方式请求
20 0
|
22天前
|
Windows
iis配置http重定向302转发get请求并去掉最后的斜杠/ iis重定向 iis去除url最后的斜杠 iis重定向链接斜杠(已解决)
iis配置http重定向302转发get请求并去掉最后的斜杠/ iis重定向 iis去除url最后的斜杠 iis重定向链接斜杠(已解决)
15 0
|
1月前
|
缓存 前端开发 JavaScript
React和Next.js开发常见的HTTP请求方法
React和Next.js开发常见的HTTP请求方法
25 0
|
Web App开发 前端开发 关系型数据库
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
fuser可用于查询文件、目录、socket端口和文件系统的使用进程 1.查询文件和目录使用者 fuser最基本的用法是查询某个文件或目录被哪个进程使用: # fuser -v .
862 0
|
Web App开发 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
zookeeper watch的定义如下:watch事件是一次性触发器,当watch监视的数据发生变化时,通知设置了该watch的client,即watcher。
908 0
|
Web App开发 存储 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
1.HBase依赖于HDFS,HBase按照列族将数据存储在不同的hdfs文件中;MongoDB直接存储在本地磁盘中,MongoDB不分列,整个文档都存储在一个(或者说一组)文件中 (存储) 2.
699 0