post 与get 区别,为什么现在的HTTP通信中大多数请求还是使用get?
来源:互联网 发布:d3.js api详解 编辑:程序博客网 时间:2024/05/17 02:20
一、原理区别
一般我们在浏览器输入一个网址访问网站都是GET请求;再FORM表单中,可以通过设置Method指定提交方式为GET或者POST提交方式,默认为GET提交方式。
HTTP定义了与服务器交互的不同方法,其中最基本的四种:GET,POST,PUT,DELETE,HEAD,其中GET和HEAD被称为安全方法,因为使用GET和HEAD的HTTP请求不会产生什么动作。不会产生动作意味着GET和HEAD的HTTP请求不会在服务器上产生任何结果。但是安全方法并不是什么动作都不产生,这里的安全方法仅仅指不会修改信息。
根据HTTP规范,POST可能会修改服务器上的资源的请求。比如CSDN的博客,用户提交一篇文章或者一个读者提交评论是通过POST请求来实现的,因为再提交文章或者评论提交后资源(即某个页面)不同了,或者说资源被修改了,这些便是“不安全方法”。
二、表现形式区别
搞清楚了两者的原理区别后,我们来看一下在实际应用中的区别。
首先,我们先看一下HTTP请求的格式:
- <method> <request-URL> <version>
- <headers>
- <entity-body>
在HTTP请求中,奇异行必须是一个请求行,包括请求方法,请求URL,报文所用HTTP版本信息。紧接着是一个herders小节,可以有零个或一个首部,用来说明服务器要使用的附加信息。在首部之后就是一个空行,最后就是报文实体的主体部分,包含一个由任意数据组成的数据块。但是并不是所有的报文都包含实体的主体部分。
GET请求实例:
- GET http://weibo.com/signup/signup.php?inviteCode=2388493434
- Host: weibo.com
- Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
POST请求实例:
- POST /inventory-check.cgi HTTP/1.1
- Host: www.joes-hardware.com
- Content-Type: text/plain
- Content-length: 18
- item=bandsaw 2647
接下来看看两种请求方式的区别:
1、GET请求,请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接。URL的编码格式采用的是ASCII编码,而不是uniclde,即是说所有的非ASCII字符都要编码之后再传输。
POST请求:POST请求会把请求的数据放置在HTTP请求包的包体中。上面的item=bandsaw就是实际的传输数据。
因此,GET请求的数据会暴露在地址栏中,而POST请求则不会。
POST 是否比 GET 安全
是的, POST要比GET安全一点点,注意,是一点点。。。
说这两者都是明文传送当然是没有错的了,但是这里有一个细节,就是GET的URL会被放在浏览器历史和WEB 服务器日志里面。
POST 发完基本就木有了。。
所以如果你把关键数据放在GET里面,被人偷窥了浏览器,或者WEB服务器被入侵日志被人倒去了,基本泄露可能性100%。而POST来说,日志没有记录,只要数据库服务器不被入侵,基本还是安全的。
当然如果被抓了包,这一切都没有什么卵用,所以,HTTPS该用还是得用。
最大的优势是, GET 的URL可以人肉手输啊。。。你在地址栏打个POST给我看看。本质上面, GET 的所有信息都在URL, 所以很方便的记录下来重复使用。
所以如果你希望
- 请求中的URL可以被手动输入
- 请求中的URL可以被存在书签里,或者历史里,或者快速拨号里面,或者分享给别人。
- 请求中的URL是可以被搜索引擎收录的。
- 带云压缩的浏览器,比如Opera mini/Turbo 2, 只有GET才能在服务器端被预取的。
- 请求中的URL可以被缓存。
请使用GET.
最大的优势是, GET 的URL可以人肉手输啊。。。你在地址栏打个POST给我看看。本质上面, GET 的所有信息都在URL, 所以很方便的记录下来重复使用。
所以如果你希望
- 请求中的URL可以被手动输入
- 请求中的URL可以被存在书签里,或者历史里,或者快速拨号里面,或者分享给别人。
- 请求中的URL是可以被搜索引擎收录的。
- 带云压缩的浏览器,比如Opera mini/Turbo 2, 只有GET才能在服务器端被预取的。
- 请求中的URL可以被缓存。
请使用GET.
作者:罗志宇
链接:https://www.zhihu.com/question/31640769/answer/52824098
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
- post 与get 区别,为什么现在的HTTP通信中大多数请求还是使用get?
- [Http]post 相比get 有很多优点,为什么现在的HTTP通信中大多数请求还是使用get?
- post 相比get 有很多优点,为什么现在的HTTP通信中大多数请求还是使用get?
- post 相比get 有很多优点,为什么现在的HTTP通信中大多数请求还是使用get?
- post 相比get 有很多优点,为什么现在的HTTP通信中大多数请求还是使用get?
- post 相比get 有很多优点,为什么现在的HTTP通信中大多数请求还是使用get
- HTTP中POST请求与GET请求的区别
- HTTP请求:GET与POST的区别
- HTTP请求GET与POST的区别
- http请求get与post的区别
- HTTP请求的使用以及POST与GET的区别
- HTTP请求中POST与GET的区别
- HTTP请求中POST与GET的区别
- HTTP请求中POST与GET的区别
- HTTP请求中POST与GET的区别
- HTTP请求中POST与GET的区别
- HTTP请求中POST与GET的区别
- HTTP请求中POST与GET的区别
- Linux查看CPU信息
- L3 使用PuTTY,xshell远程连接Linux及PuTTY,xshell密钥认证
- AI世界:2018年八大趋势
- Android用jsoup解析html
- 微信开发返回【10003】错误
- post 与get 区别,为什么现在的HTTP通信中大多数请求还是使用get?
- Android开发之PendingIntent的使用
- 设计模式-原型模式
- Linux安装NodeJS
- 一张图说明各个开源协议的不同
- Maven profile实现多环境配置
- [干货]作为大数据入门者_你不得不知道的2017杭州云栖大会
- .NET与JAVA的区别【完整版】
- pip install opencv-python opencv-contrib-python 不可用时,可使用whl的方式安装