get 和 post 请求有什么区别?

2021-06-23 18:32发布

ajax请求的时候get 和 post 方法有什么区别吗?两种请求各自在哪些情况是使用?

ajax请求的时候get 和 post 方法有什么区别吗?两种请求各自在哪些情况是使用?

12条回答
三岁奶猫
2楼 · 2021-06-24 13:44

从 RFC 规范的(Safe-安全、Idempotent-幂等、Cacheable-可缓存性、语义)角度看 

  • GET 安全;POST 不安全

  • GET 幂等;POST 不幂等

  • GET 可缓存;POST 不可缓存

  • GET 用于信息获取;POST 表示可能修改变服务器上的资源的请求

这里的安全是指,GET 只读服务器数据不会修改; 幂等简单理解就是每次请求结果和产生的影响都一样。


  • GET在浏览器回退时是无害的,而POST会再次提交请求。

     

  • GET产生的URL地址可以被Bookmark,而POST不可以。

     

  • GET请求会被浏览器主动cache,而POST不会,除非手动设置。

     

  • GET请求只能进行url编码,而POST支持多种编码方式。

     

  • GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。

     


茄子酱
4楼 · 2021-06-25 09:54

如图:

image.png


寂静的枫林
5楼 · 2021-06-26 10:11

最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。

flame
6楼 · 2021-06-30 16:43

 1、从主流浏览器的实现角度看


下面的对比表格摘自: w3school -- HTTP 方法:GET 对比 POST


  GET POST

后退按钮/刷新 无害 数据会被重新提交(浏览器应该告知用户数据会被重新提交)。

书签 可收藏为书签 不可收藏为书签

缓存 能被缓存 不能缓存

编码类型 application/x-www-form-urlencoded application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。

历史 参数保留在浏览器历史中。 参数不会保存在浏览器历史中。

对数据长度的限制 是的。当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。 无限制。

对数据类型的限制 只允许 ASCII 字符。 没有限制。也允许二进制数据。

安全性

与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。


在发送密码或其他敏感信息时绝不要使用 GET !


POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。

可见性 数据在 URL 中对所有人都是可见的。 数据不会显示在 URL 中。

 


2、从 RFC 规范的(Safe-安全、Idempotent-幂等、Cacheable-可缓存性、语义)角度看 


GET 安全;POST 不安全

GET 幂等;POST 不幂等

GET 可缓存;POST 不可缓存

GET 用于信息获取;POST 表示可能修改变服务器上的资源的请求

这里的安全是指,GET 只读服务器数据不会修改; 幂等简单理解就是每次请求结果和产生的影响都一样。

靓猴一枚
7楼 · 2021-07-04 23:19

post可修改,get只读

天才小馒头
8楼 · 2021-08-13 15:17

①. get多用于从服务器请求获取数据,post多用于向服务器发送数据。

②.get传递数据直接拼接在URL后面,值和后台协定好的字段对应,在URL中可以看到。post相对比较灵活,传递一个object,里面吧用于提交的表单数据放在里面。用户看不到这个过程,因此get安全性非常低,post安全性较高。

③. 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。

④.get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。

⑤. HTTP 定义了与服务器交互的不同方法,最基本的方法是 GET 和 POST。事实上 GET 适用于多数请求,而保留 POST 仅用于更新站点。根据 HTTP 规范,GET 用于信息获取,而且应该是 安全的和幂等的。所谓安全的意味着该操作用于获取信息而非修改信息。换句话说,GET 请求一般不应产生副作用。幂等的意味着对同一 URL 的多个请求应该返回同样的结果。完整的定义并不像看起来那样严格。从根本上讲,其目标是当用户打开一个链接时,她可以确信从自身的角度来看没有改变资源。 比如,新闻站点的头版不断更新。虽然第二次请求会返回不同的一批新闻,该操作仍然被认为是安全的和幂等的,因为它总是返回当前的新闻。反之亦然。POST 请求就不那么轻松了。POST 表示可能改变服务器上的资源的请求。仍然以新闻站点为例,读者对文章的注解应该通过 POST 请求实现,因为在注解提交之后站点已经不同了7 在FORM提交的时候,如果不指定Method,则默认为GET请求,Form中提交的数据将会附加在url之后。GET请求请提交的数据放置在HTTP请求协议头中,而POST提交的数据则放在实体数据中;GET方式提交的数据最多只能有1024字节,而POST则没有限制。



我的网名不再改
9楼 · 2021-08-25 12:45

 1、从主流浏览器的实现角度看


下面的对比表格摘自: w3school -- HTTP 方法:GET 对比 POST


  GET POST

后退按钮/刷新 无害 数据会被重新提交(浏览器应该告知用户数据会被重新提交)。

书签 可收藏为书签 不可收藏为书签

缓存 能被缓存 不能缓存

编码类型 application/x-www-form-urlencoded application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。

历史 参数保留在浏览器历史中。 参数不会保存在浏览器历史中。

对数据长度的限制 是的。当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。 无限制。

对数据类型的限制 只允许 ASCII 字符。 没有限制。也允许二进制数据。

安全性

与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。


在发送密码或其他敏感信息时绝不要使用 GET !


POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。

可见性 数据在 URL 中对所有人都是可见的。 数据不会显示在 URL 中。

 


2、从 RFC 规范的(Safe-安全、Idempotent-幂等、Cacheable-可缓存性、语义)角度看 


GET 安全;POST 不安全

GET 幂等;POST 不幂等

GET 可缓存;POST 不可缓存

GET 用于信息获取;POST 表示可能修改变服务器上的资源的请求

这里的安全是指,GET 只读服务器数据不会修改; 幂等简单理解就是每次请求结果和产生的影响都一样。


 


3、注意问题


长度限制:http 协议并未规定 get 和post  的长度限制


                  get 的最大长度限制是因为浏览器和 web 服务器限制了 URL 的长度


                  不同的浏览器和web服务器,限制的最大长度不一样


                  超出了最大长度,大部分的服务器直接截断,有些服务器会报414错误


 


安全:这里的安全指使用过程中的安全


           GET 是通过 URL 方式请求,可以直接看到,明文传输; POST 参数通过 header 传输,同样是明文


           浏览器会缓存和记录 GET 请求及参数,不缓存 POST 的请求的参数(如参数中包含敏感信息可能被其他从浏览器的缓存和浏览记录获取)


相关问题推荐

  • 回答 120

    相对前几年来说,要高上不少了,毕竟入行的人也是越来越多了,基础的工作对应想要参与的人群基数越来越大,但是对于高端人才的需求还是很多,人才还是相对稀缺性的。所以,想要学web或者其他技术也一样,别等,别观望。web前端就业方向特别多包括web前端开发...

  • 回答 25

    相对定位和绝对定位是定位的两种表现形式,区别如下:一、主体不同1、相对定位:是设置为相对定位的元素框会偏移某个距离。2、绝对定位:absolute 脱离文档流,通过 top,bottom,left,right 定位。二、特点不同1、相对定位:在使用相对定位时,无论是否进行移...

  • 抓包是什么意思?2020-04-01 17:36
    回答 7
    已采纳

    抓包(packet capture)就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。抓包也经常被用来进行数据截取等。抓包可以通过抓包工具来查看网络数据包内容。通过对抓获的数据包进行分析,可以得到有用的信息。目前流行的...

  • 回答 89

    常用的前端框架有Bootstrap框架、React框架、Vue框架、Angular框架、Foundation框架等等

  • 回答 65
    已采纳

    前端是目的就业前景非常不错的一个计算机技术,但是自学的话还是有一定难度的,网络上自学是碎片化的,同时互联网技术跟新换代快,自己的话比较吃力也学习不到最新的技术。

  • SSR 是什么意思?2020-03-20 18:56
    回答 6

    SSR就是一台服务器,可以利用 SSR 在远程的服务器上配置 SSR,使其能够成为 SSR 节点,这样本地电脑或者其它设备利用 SSR 节点实现 VPN 或者远程上网及游戏加速等方面。ShadowsocksR(简称 SSR)是 Shadowsocks 分支,在 Shadowsocks 的基础上增加了一些数据...

  • 回答 52
    已采纳

    计算机培训方向比较多,建议找适合自己的方向选择培训编程类:JAVA、WEB、Python、C/C++、C#等测试类:软件测试运维类:云计算、网络安全设计类:UI设计、3D建模等

  • 回答 11

    1、代码判断xAxis: {type: 'time',splitLine: {show: false},interval: 3600, // 设置x轴时间间隔axisLabel: {formatter: function(value, index) {return liangTools.unix2hm(value)}}},首先要把xAxis 显示类型设置成time,然后设置对应X轴......

  • 回答 8

    HTML5 + CSS + JavaScript 开发 跨平台重用代码 

  • 回答 4

    采用rem单位自动响应,并提供独有栅格化系统快速定义宽高、边距节省css代码量,同时总结各大型移动端网页,提供一套ui颜色搭配规范,尺寸规范,字体规范等。

  • 回答 10

    iView UI、ioni、SUI

  • 回答 6

     jQTouch 

  • 回答 4

    如果只是普通的移动端用vue react 或者dva 如果是要编译成小程序什么的或者混生 就用uni-app(对应vue语法)taro(对应react) 或者纯原生 这个没有限制的,自己怎么舒服怎么来

  • 回答 4

    因为可以运用在网页和小程序的开饭中,而且开源,用着便宜,企业都很喜欢

  • 回答 10

    一、Visual Studio Code下载地址:https://code.visualstudio.com/微软在2015年4月30日Build 开发者大会上正式宣布了 Visual Studio Code 项目:一个运行于 Mac OS X、Windows和 Linux 之上的,针对于编写现代 Web 和云应用的跨平台源代码编辑器。Visual Stud...

  • 回答 9

    jQuery自带淡入淡出效果 https://www.w3school.com.cn/jquery/jquery_fade.asp 看看这个 

没有解决我的问题,去提问