首页 > 试题广场 >

表单提交中Get和Post方式的区别?

[问答题]
表单提交中Get和Post方式的区别?

get从服务器端获取数据

post向服务器端发送数据

get方式在url中用户看得到数据内容

post方式在url中看不到数据内容

get方式传输的数据量小 安全性低

post方式传输的数据量大 安全性高



发表于 2019-06-06 13:14:59 回复(2)
其实这个题答得并不好,只是看到了表象:
原理性区别:
1. Http 定义的与服务器交互的四种基本方法,增删改查( put delete post get );从定义而言 get 用于信息获取(状态不做迁移),而且是安全幂等的(不修改信息、同一 url 多次请求结果一致),但有时候并不严格遵循规定,比如腾讯新闻的刷新操作,因为从 server端来讲,数据状态并没有发生任何改变 ,所以也可以算成是幂等; post 可以修改服务器上的资源请求(资源的状态迁移),比如新闻评论的提交,提交前后资源被修改了。
2. 关于幂等与否只是 http 的规定,实际中要看服务器端怎么写。
表象上的区别:
1. 提交的安全性不同: Get 将表单中数据的按照 variable=value 的形式,添加到 action 所指向的 URL 后面,并且两者使用“ ? ”连接,而各个变量之间使用“ & ”连接(明文提交); Post 是将表单中的数据放在 form 的数据体中,按照变量和值相对应的方式,传递到 action 所指向 URL (依照表单提交)。
2. Get 传输的数据量小( 1024 字节),这主要是因为受 URL 长度限制; url 长度在 http 协议中没有限制,只是 IE url 有长度限制,其他浏览器取决于操作系统,理论上没有限制。 Post 可以传输大量的数据( 2M ),理论上 http 没有限制数据量长度,服务器处理程序的处理能力限制了表单域长度,而有限制
3. Get 限制 Form 表单的数据集的值必须为 ASCII 字符;而 Post 支持整个 ISO10646 字符集。
4. 传输信息所在 http 中的位置不同: Post 的信息作为 http 请求的内容,而 Get 是在 Http 头部传输的, get 请求可以有 body 但大多数服务器不会解析 get 请求的 body
发表于 2017-03-09 22:10:35 回复(0)
get 获取,post更新 。 get 数据在url能被看见,安全性较低; post 发送传送数据时用户看不见,安全性较高; get 数量有限制; post 数量没限制; 【仅供简单记忆】
编辑于 2017-12-13 09:22:29 回复(0)

Get请求与Post请求区别:

1. 后退按钮/刷新:无害丨数据会被重新提交


2. 书签:可以收藏为书签丨不可以收藏为书签


3. 缓存:能被缓存(读取数据,并不会改变数据,因此可以被缓存)丨不能被缓存(提交数据,多次提交不同数据,会改变数据,缓存就没有什么意义)


4. 参数数据类型:ASCII丨整个ISO10646,也允许二进制数据


5. 历史:参数保存在浏览器历史中丨不保存


6. 参数数据量大小:小(取决于浏览器)丨大


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


8. 安全性:参数放在透明的URL中,因此较差较差丨参数不会被保存在浏览器历史或服务器日志中,因此较好(其实并不严谨,抓包也可以很容易看到POST请求中的请求报文)


9. 传输的信息在http中的位置:请求头丨请求体(此处并不做严格区分,get请求也能将参数放置请求体,但某些浏览器不支持这样操作,post也可将参数放置请求头)


10. 安全幂等丨非安全非幂等

(安全:该操作用于“获取信息”而非操作信息

幂等:对同一URL的多次请求返回结果相同


部分细节可以再参考一下:

【GET 和 POST 的区别_Marck的博客-CSDN博客_get和post的区别】https://blog.csdn.net/qq_38182125/article/details/89071899

编辑于 2021-03-22 10:36:48 回复(0)
  • get请求一般是用于信息获取,使用url传递参数,对于发送的信息长度有限制,一般为2k;请求的参数只能是ASCII码/url编码。

  • post请求一般用来修改服务器上的资源,对请求长度没有限制,请求的参数也没有编码限制

  • get请求的参数一般是放在url里的,post一般是放在请求体里。(post也可以放在url上,只是使用习惯,不能算真的区别)

  • get请求浏览器将http header data一起发送到服务器,之后返回200和数据,产生一个tcp数据包

  • post,浏览器先发送header,服务器响应100,在发送data,服务器响应200和返回的数据,产生两个tcp数据包。(firefox又不一样,似乎是一个)

编辑于 2020-08-15 18:36:11 回复(0)
get 是查询 post是改 get 传输数据量小,不安全,post不限制数据传输量,安全 get有缓存,post没缓存,页面返回时候需要重新发送请求
发表于 2020-11-26 20:17:18 回复(0)
<p>get从服务器端获取数据,post传输数据</p><p>get提交数据会通过url,有大小限制</p><p>安全性get低</p>
发表于 2020-08-29 12:31:22 回复(0)
<p>get和post都是http协议的其中一种方法,也就是对应的:查,改</p><p>get是从服务器请求数据,而post则是向服务器提交数据</p><p>get请求会将请求的数据放在URL后这也就意味着其在数据传递的过程中会相对不安全,而且能传输的数据大小也会比post小</p><p>post请求是不会将数据暴露出来,也就相对安全,</p><p><br></p>
发表于 2020-05-12 21:29:47 回复(0)