zoukankan      html  css  js  c++  java
  • HTTP

    网上有很多文章介绍这两种HTTP请求的区别,我也不懂,主要还是看了一些文章,在这里写下一些笔记。


    1. 语义不同
      在HTTP协议中,最初规定GET是用来查询或者获取资料,只读,POST用于修改数据,可写。因此可以看到两种方式的使用场景上就有很大的区别,在RESTful中更是强调了这两种HTTP请求方式目的。规定是死的,人是活的,所以很多人为了方便GET也用于修改数据,比如删除某个记录,这样很容易被CSRF,题外话。
    2. 发送数据
      HTTP协议中,GET和POST都可以先服务器发送数据,GET的提交的数据只能在URL中表示,而URL只允许部分可见字符,其他字符都需要转换%xx的形式;POST提交的数据可以在URL中,也可以在BODY里,在BODY里面的数据可以是URLEncoded的普通数据,同样是可以是直接的二进制流数据,这样可以剩下不少流量。一个字节变成%xx,长度就是原来的三倍了。
    3. 长度限制
      在HTTP协议中,GET和POST提交的数据长度是没有限制的。但是一般的浏览器和服务器软件都会限制URL的长度,因为一般服务器会把URL当成字符串来进行使用,一个超长的字符串肯定会影响到服务器的性能。而POST提交数据虽然会比GET的数据大很多,但是一般服务器还是会限制其大小,在nginx中,有一个配置项为client_max_body_size就是来设置POST的body数据大小的,有兴趣的朋友可以试一下。
    4. 安全性
      安全性和这两种方式没有任何关系。数据在HTTP上面走,肯定会被别人嗅探到,关键还是看你对数据的加密程度和算法了。上面说道了GET进行一些写操作容易被csrf,其实只要在GET请求中带上一些防御csrf的措施,那就不会被CSRF攻击了。反之如果使用的是POST方式,但是没有部署anti-CSRF方案的话,同样会被csrf攻击的。

    好了,我的笔记写完了,有兴趣的朋友可以拍砖。哈哈,交流学习下。

  • 相关阅读:
    SQL Server查询死锁并KILL
    android之Widget01
    android之RatingBar控件用法
    android之SeekBar控件用法
    android之ExpandableListActivity
    【原创】开源.NET排列组合组件KwCombinatorics使用(一)—组合生成
    【吐槽】博客园新的原创文章在搜索引擎的排名不及转载的站点
    【资源】108个大数据文档PDF开放下载-整理后打包下载
    【原创】.NET平台机器学习组件-Infer.NET连载(二)贝叶斯分类器
    【原创】.NET平台机器学习组件-Infer.NET连载(一)介绍
  • 原文地址:https://www.cnblogs.com/huangjacky/p/4018139.html
Copyright © 2011-2022 走看看