GET方法

1、GET交互方式是从服务器上获取数据,而并非修改数据,所以GET交互方式是安全的。就像数据库查询一样,从数据库查询数据,并不会影响数据库的数据信息,对数据库来说,也就是安全的。
2、GET交互方式是幂等的,幂等是一个数学概念,幂等函数就是可以使用相同参数重复执行,并且能获得相同结果的函数。在GET交互这里就是,对同一个URL的多个请求,得到的结果是相同的。就像数据库查询,不同的数据库连接对同一个数据库表用相同条件查询时,得到的结果也是一样的。

POST方法

1、POST交互是可以修改服务器数据的一种方式,涉及到信息的修改,就会有安全问题。就像数据库的更新,Update一个数据库表时,如果条件没有写对,就可能把不需要修改的数据给修改了,得到的数据就是错误的了。

2、一般的POST交互是必须要用到表单的,但是表单提交的默认方法是GET,如果改为POST方式,就需要修改表单提交时的Method。

GET和POST表现形式区别

GET 方法查询字符串(名称/值对)是在 GET 请求的 URL 中发送的:

GET /test/demo_form.php?name1=value1&name2=value2 HTTP/1.1

POST 方法查询字符串(名称/值对)是在 POST 请求的 HTTP 消息主体中发送的:

POST /test/demo_form.php HTTP/1.1
Host: runoob.com name1=value1&name2=value2

GET

POST

后退按钮/刷新

无害

数据会被重新提交(浏览器应该告知用户数据会被重新提交)。

书签

可收藏为书签

不可收藏为书签

缓存

能被缓存

不能缓存

编码类型

application/x-www-form-urlencoded

application/x-www-form-urlencoded or multipart/form-data。为二进制数据使用多重编码。

历史

参数保留在浏览器历史中。

参数不会保存在浏览器历史中。

对数据长度的限制

是的。当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。

无限制。

对数据类型的限制

只允许 ASCII 字符。

没有限制。也允许二进制数据。

安全性

与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。
在发送密码或其他敏感信息时绝不要使用 GET !

POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。

可见性

数据在 URL 中对所有人都是可见的。

数据不会显示在 URL 中。

GET和POST本质区别

GET和POST本质上都是TCP链接,能做的事情并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。

GET和POST还有一个重大区别:

GET产生一个TCP数据包:对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);

POST产生两个TCP数据包:对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

因为POST需要两步,时间上消耗的要多一点,看起来GET比POST更有效。因此Yahoo团队有推荐用GET替换POST来优化网站性能。但这是一个坑!跳入需谨慎。为什么?

1. GET与POST都有自己的语义,不能随便混用。

2. 据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。

3. 并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。

参考:https://www.cnblogs.com/logsharing/p/8448446.html

最新文章

  1. 虚拟机利用Host-only实现在不插网线的情况下,虚拟机与主机实现双向通信,实现ssh连接以及samba服务实现共享
  2. php+mysql+smarty+oop
  3. UI UIBUTTON
  4. Sharepoint学习笔记—习题系列--70-576习题解析 -(Q21-Q24)
  5. js实现登陆页面的拖拽功能
  6. Git指令总结和图表
  7. C# 访问USB(HID)设备
  8. iOS制作gif动态图
  9. C#文本转语音并保存wav和MP3文件
  10. BootStrap学习之先导篇——响应式网页
  11. GridView控件-01-[简单的数据显示]
  12. css ::before和::after伪元素的用法
  13. bzoj 4591: [Shoi2015]超能粒子炮·改 [lucas定理]
  14. Chrome 开发者工具
  15. Effective Java 第三版—— 87. 考虑使用自定义序列化形式
  16. Java使用SFTP协议上传、下载文件
  17. 4--Python入门--Python数据集合类型--集合
  18. Spring Boot中使用Swagger2构建RESTful API文档
  19. Spring Cloud 入门 之 Feign 篇(三)
  20. JAVA中的异常疑点解析

热门文章

  1. 接口测试Jmeter+Fiddler组合
  2. SQL SERVER或oracl如何判断删除列
  3. 基于oracle数据库存储过程的创建及调用
  4. oracle10g学习笔记
  5. 学习Java的知识体系路线(详细完整版,附图加目录)
  6. MySQL5.7.24安装笔记
  7. MySQL 基础小技巧
  8. 误卸载glibc类库导致系统崩溃解决方案
  9. 基于 pyMongo 和 wxPython 实现的 MongoDB Schema Analyser
  10. pyhton习题20190201