get和post的区别是什么?

参考:GET 和 POST 究竟有什么区别

看完还敢说分不清Get与Post的区别吗

1、用途的描述
  1. GET方法请求一个指定资源的表现形式,使用GET请求应该只被用于获取数据
  2. POST方法用于将实体提交到指定的资源,通常导致状态或服务器上的副作用的更改
2、HTTP几个方法的性质
  1. Safe-安全:一个方法在语义上需要是只读的,不能修改服务器状态(或者说是数据),GET, HEAD, OPTIONS 和 TRACE 这几个方法是安全的
  2. Idempotent - 幂等:同一个请求方法执行多次和仅执行一次的效果完全相同。PUT、DELETE 和GET、 HEAD、OPTIONS、TRACE 方法都是幂等的,POST方法是非幂等的
  3. Cacheable - 可缓存性:一个方法可以被缓存,就是在某些情况下可以被缓存,比如我们请求页面时候,一些静态文件是可以直接从缓存中获取的,比如 css、js、图片等文件。 GET,HEAD 和某些情况下的 POST 都是可缓存的。
3、GET和POST的几个主要区别
  1. GET在浏览器回退或者刷新时时无害的,而POST会再次提交请求,因为GET请求是幂等的,而POST不是
  2. GET请求在URL中传送的参数是有长度限制的,而POST没有,因为大多数浏览器通常都会限制url长度在2K个字节,而大多数服务器最多处理64K大小的url
  3. GET请求只能进行url编码,而POST支持多种编码方式
  4. GET参数通过URL传递,POST放在Request body中
  5. 对参数的数据类型,GET只接受ASCII字符,而POST没有限制
  6. GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息
  7. GET请求参数会被完整保留在浏览器历史记录里,可被收藏为书签,而POST中的参数不会被保留
  8. GET请求会被浏览器主动cache,而POST不会,除非手动设置
4、URL编码是什么?

URL编码遵循下列规则: 每对name/value由&;符分开;每对来自表单的name/value由=符分开theName=Ichabod+Crane&gender=male&status=missing& ;headless=yes
url编码就是一个字符ascii码的十六进制。不过稍微有些变动,需要在前面加上“%”。比如“\”,它的ascii码是92,92的十六进制是5c,所以“\”的url编码就是%5c

5、应用场景的区别
  1. GET
    • 从服务器端获取数据,不做增删改(查询数据),请求结果无持续性的副作用
    • HTML表单数据仅用来帮助搜索(搜索操作)
  2. POST
    • 向服务器提交数据,如做增删改操作,请求结果有持续性的副作用
    • 若使用GET方法,则表单上收集的数据可能让URL过长
    • 要传送的数据不是采用7位的ASCII编码
6、扩展

get/post都是http/https协议的方法,加不加密它们说了不算。如果你get/post是在http里面,那就明文;在https里面,就是密文。当然,post的数据本身可以加密,这属于应用数据的加密,跟http等应用协议的加密是两回事,互不影响。
常用的与服务器进行的交互方式是GET和POST,而一般在表单的数据提交中,都会选择POST方式,如使用https进行web数据的完全加密传输,但是因为https是对所有的数据进行加密这样就影响了网页的浏览速率,况且有时只需对关键数据进行加密保护。这时就需要一些小规模的数据加密传输解决方法,用RSA加密算法加密web数据,具体是在客户端用js脚本使用公钥加密数据,再在服务器端用PHP脚本程序使用私钥解密数据。 参考:表单提交对数据进行加密详解(RSA加密)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值