欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

HTTP中get和post

程序员文章站 2022-08-08 20:12:00
HTTP中get和post的区别 GET 从指定的资源请求数据。 POST 向指定的资源提交要被处理的数据 | | GET | POST | | | | | | 后退/刷新 | 无害的 | 数据会被重新提交 | | 书签 | 可收藏为书签 | 不可收藏为书签 | | 缓存 | 能被缓存 | 不能缓存 ......

http中get和post的区别

  • get - 从指定的资源请求数据。
  • post - 向指定的资源提交要被处理的数据
get post
后退/刷新 无害的 数据会被重新提交
书签 可收藏为书签 不可收藏为书签
缓存 能被缓存 不能缓存
编码类型 application 多为二进制数据使用多重编码
历史 会保留参数在历史中 不会保存在历史数据中
对长度的限制 最大为2048 无限制
对数据类型的限制 ascii 没有限制,也可以为二进制数据
安全性 安全性较差,敏感数据,密码请勿使用后 安全性较高
可见性 数据在url中对所有人可见 数据不会限制在url中

常见问题:

  1. get方法参数是固定的么?

    在约定中我们的参数是写在?后面,用&分割,解析报文的过程是通过获取tcp数据,用正则表达式等工具获取header和body

  2. get的长度限制:

    浏览器地址栏输入的参数是有限的,http协议中没有长度限制,对url的长度限制通常为浏览器或者服务器的原因

  3. post比get安全:

    因为post数据在地址栏中不可见, 但是安全只是相对的,因为http在网络中是明文传输的,要想加密,就必须要用https

  4. post会产生2个tcp数据包?

    post会将header和body分开发送,但是http协议中没有明确会产生2个数据包,而且实际测试的时候也不会分开发送,所以分开发送只是部分浏览器和框架的请求方法,不属于post的必然行为。

请说一下get和post两者的本质区别:

get和post本质上两者没有任何区别。他们都是http协议中的请求方法。底层实现都是基于tcp/ip协议。上述的所谓区别,只是浏览器厂家根据约定,做得限制而已

http请求,最初设定了八种方法。这八种方法本质上没有任何区别。只是让请求,更加有语义而已。

  • options 返回服务器所支持的请求方法
  • get 向服务器获取指定资源
  • head 与get一致,只不过响应体不返回,只返回响应头
  • post 向服务器提交数据,数据放在请求体里
  • put 与post相似,只是具有幂等特性,一般用于更新
  • delete 删除服务器指定资源
  • trace 回显服务器端收到的请求,测试的时候会用到这个