get和post的区别

  •   GET和POST长度的限制问题

    GET:

    1、GET是通过URL提交数据,因此GET可提交的数据量就跟URL所能达到的最大长度有直接关系

    2、实际上HTTP协议对URL长度是没有限制的;限制URL长度大多数是浏览器或者服务器的配置参数

    POST:

    1、同样的,HTTP协议没有对POST进行任何限制,一般是受服务器配置限制或者内存大小

    2、PHP下可以修改php.conf的postmaxsize来设置POST的大小

  • GET和POST的安全性

    1、GET是通过URL方式请求,可以直接看到,明文传输

    2、POST是通过请求header请求,可以开发者工具或者抓包可以看到,同样也是明文的

    3、GET请求会保存在浏览器历史纪录中,还可能会保存在Web的日志中

  • GET幂等/POST不幂等

    幂等是指同一个请求方法执行多次和仅执行一次的效果完全相同。

  1. GET后退按钮/刷新无害,POST数据会被重新提交(浏览器应该告知用户数据会被重新提交)。
  2. GET书签可收藏,POST为书签不可收藏。       (???)
  3. GET能被缓存,POST不能缓存 。       (get相当于查询,缓存有效果;post相当于增删改,每次的数据不一样,缓存没有作用)
  4. GET编码类型application/x-www-form-url,POST编码类型encodedapplication/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。
  5. GET历史参数保留在浏览器历史中。POST参数不会保存在浏览器历史中。   (???)
  6. GET对数据长度有限制,当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。POST无限制。
  7. GET只允许 ASCII 字符。POST没有限制。也允许二进制数据。
  8. 与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。在发送密码或其他敏感信息时绝不要使用 GET !POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。
  9. GET的数据在 URL 中对所有人都是可见的。POST的数据不会显示在 URL 中。




 

原文地址:https://www.cnblogs.com/chengchengla1990/p/9004797.html