php - POST和GET的根本区别是什么?
PHP中文网
PHP中文网 2017-04-10 15:34:46
[PHP讨论组]
  1. POST和GET的根本区别是什么?(请不要回答POST安全或POST传递的信息容量大)
  2. 请从数据包报文的角度分析POST和GET的区别

谢谢

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(10)
伊谢尔伦

协议角度来说, POST和GET只有报文第一行的METHOD不同,GET也是可以携带CONTENT-BODY的

补充,post也可以接收query string,最简单的栗子就是

<form method="post" action="/query.do?type=1">

get也可以有body,协议中只说了服务器无需关心get的body(默许了可以带),但并未明文禁止携带,评论中也有同学提到elasticsearch的栗子

get post的语义,幂等差异,我觉得已经超出了协议或者提主想要的抓包的范畴

巴扎黑

这可能多多少少有RESTful的功劳,POST/DELETE/PUT/GET和数据操作对应起来,网上资料很多。

POST /uri 创建
DELETE /uri/xxx 删除
PUT /uri/xxx 更新或创建
GET /uri/xxx 查看

另外GET的话, URL是有长度限制的,(虽然很长,但是有时候不一定足够)

PHP中文网

可以看看这篇文章 链接描述

PHP中文网

get 一万遍 得到的都是同一个东西 post就不一样了 这个就是等幂和非等幂

大家讲道理

GET获取与POST给予的关系

怪我咯

本质区别是数据放在哪里。

性质性的区别是幂等。

PHP中文网

我的理解:
POST提交是隐式。(提交的参数对流量者是隐藏的)
GET提交是显式。(提交的参数包含在URL中,是可见的)

怪我咯

如果非得说不同的话,那就是浏览器处理这两种协议的方式不同,GET想刷新几次刷新几次,POST刷新就会提示“重复提交表单”,非要给这两个扣个帽子,那就应该是根据流传下来的习惯,这两个东西的“幂等性”不同。

至于后台处理POST和GET有没有不同,那就不好说了。
以前貌似试过,jsp的servlet.getParameter取不到POST放在URL的参数。我不确定。

天蓬老师

抓包的时候可以发现:
get一般就1到2个tcp包(信息头和数据都在一起,如果信息头内容很多就会产生2个或者多个包),而post至少2个包(第一个包是信息头,第二个才是数据)。

天蓬老师

哎,你真是天天没事干,这种问题搞清楚了对开发来说又有什么帮助啊?程序是用来解决问题的,你是纯搞理论研究的,反正我是无知者无畏,it知识是学不完的,能会用一些都不错了,死抠这个你可以抠十年,最后抠出来了还没有什么应用场景骚年

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号