GET和POST


 Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。

1.区别(表现形式角度)

method GET POST
后退按钮/刷新 无害(幂等) 数据会被重新提交
书签 可收藏为书签 不可收藏为书签
缓存 能被缓存 不能缓存
编码类型 application/x-www-form-urlencoded application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码
历史 参数保留在浏览器历史中 参数不会保存在浏览器历史中
对数据长度的限制 有限制 无限制
对数据类型的限制 只允许 ASCII 字符 没有限制。也允许二进制数据
安全性 与 POST 相比,GET 的安全性较差,因为所发送的数据是URL的一部分。在发送密码或其他敏感信息时绝不要使用 GET POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中
可见性 数据在 URL 中对所有人都是可见的 数据不会显示在 URL 中

2.具体解释

1.Get/Post后退或刷新(幂等):

比如在请求响应前失去连接,如果方法是幂等的,就可以放心地重发一次请求。这也是浏览器在后退/刷新时遇到POST会给用户提示的原因:POST语义不是幂等的,所以在实际应用中要防止表单的重复提交。

幂等:幂等的意味着对同一URL的多个请求应该返回同样的结果

2.Get/Post收藏书签:

由于Get请求的参数都附着在URL上。POST把提交的数据则放置在是HTTP包的包体中。比如一个当前打开的淘宝网址为 ( Get ) :www.taobao.com?id=456&name=123  加入书签中,下次可以照常打开这个页面。如果这是一个Post请求获得的商品页面地址如:http://www.taobao.com 加入书签后,下次打开或者发给别人看,别人只能打开只是淘宝网的首页而已。

3.Get/Post缓存:

GET时默认可以复用前面的请求数据作为缓存结果返回,此时以完整的URL作为缓存数据的KEY。如果为了请求到新数据可以在url后随意加一个参数,就会重新请去服务器请求资源。而post一般不会被这些缓存影响。

4.GET和POST长度的限制:

HTTP协议对URL长度是没有限制的。GET是通过URL提交数据,因此GET可提交的数据量就跟URL所能达到的最大长度有直接关系。

5.GET和POST安全性:

1.GET是通过URL方式请求,可以直接看到,明文传输
2.POST是通过请求header请求,普通用户是看不到请求的参数的(可以开发者工具或者抓包可以看到) 3.比如在评论别人文章时,使用post,如果使用get地址栏显示:http://www.xxxx.com?uid=xx&content=xxxx,内容会直接显示出来,如果别人把url复制一下就可以帮你评论那不是就乱套了( 不安全)。

3.总而言之

1.Get用于从服务器端获取数据,包括静态资源、动态数据展示等等。
2.POST用于向服务器提交数据,比如增删改数据等操作。

最新文章

  1. 在Unity中使用TDD - 初探
  2. [课程设计]Scrum 1.4 多鱼点餐系统开发进度
  3. Django初体验(一):自定义表单提交
  4. Java Web 设置默认首页
  5. Objective之ARC
  6. LINUX中的虚拟文件系统结构
  7. Cocos3.0测试版发布(中文)
  8. vim note(4)
  9. 福建省队集训被虐记——DAY1
  10. Uva 11029 Leading and Trailing (求n^k前3位和后3位)
  11. git 利用分支概念实现一个仓库管理两个项目
  12. Angular筛选功能
  13. 流式大数据计算实践(6)----Storm简介&使用&安装
  14. docker安装tomcat并部署web项目
  15. 特征脸是怎么提取的之主成分分析法PCA
  16. EF连接MySql数据库
  17. C# Remoting例子
  18. JAVA程序调试
  19. Python技巧——list与字符串互相转换
  20. Spring源码解析(四)Bean的实例化和依赖注入

热门文章

  1. Project Euler 38 Pandigital multiples
  2. PHP学习总结(3)——PHP入门篇之PHP的echo语句
  3. hdu 2491 贪心
  4. oracle自定义判断是否数字函数isNumber()
  5. BigDecimal类(高精度小数)
  6. Microsoft Dynamics CRM 2013 for Outlook 的硬件要求
  7. c 语言函数可变參数的处理
  8. 并行编程(1) - sum.msic.Unsafe 一
  9. shell脚本创建和执行
  10. C# Keywords - is