HTTP请求中POST与GET的区别

来源:互联网 发布:西安软件退税政策 编辑:程序博客网 时间:2024/05/22 11:36

转自http://blog.csdn.net/yipiankongbai/article/details/24025633

一、原理区别

一般我们在浏览器输入一个网址访问网站都是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=2388493434Host: weibo.comAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

POST请求实例:

POST /inventory-check.cgi HTTP/1.1Host: www.joes-hardware.comContent-Type: text/plainContent-length: 18item=bandsaw 2647

接下来看看两种请求方式的区别:

1、GET请求,请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接。URL的编码格式采用的是ASCII编码,而不是uniclde,即是说所有的非ASCII字符都要编码之后再传输。

POST请求:POST请求会把请求的数据放置在HTTP请求包的包体中。上面的item=bandsaw就是实际的传输数据。

因此,GET请求的数据会暴露在地址栏中,而POST请求则不会。


2、传输数据的大小

在HTTP规范中,没有对URL的长度和传输的数据大小进行限制。但是在实际开发过程中,对于GET,特定的浏览器和服务器对URL的长度有限制。因此,在使用GET请求时,传输数据会受到URL长度的限制。

对于POST,由于不是URL传值,理论上是不会受限制的,但是实际上各个服务器会规定对POST提交数据大小进行限制,Apache、IIS都有各自的配置。


3、安全性

POST的安全性比GET的高。这里的安全是指真正的安全,而不同于上面GET提到的安全方法中的安全,上面提到的安全仅仅是不修改服务器的数据。比如,在进行登录操作,通过GET请求,用户名和密码都会暴露再URL上,因为登录页面有可能被浏览器缓存以及其他人查看浏览器的历史记录的原因,此时的用户名和密码就很容易被他人拿到了。除此之外,GET请求提交的数据还可能会造成Cross-site request frogery攻击


4、HTTP中的GET,POST,SOAP协议都是在HTTP上运行的


三、HTTP响应

HTTP响应报文的格式

<version> <status> <reason-phrase><headers><entity-body>


status,状态码描述了请求过程中发生的情况

reson-phrase 是数字状态码的可读版本

常见的状态码以及含义如下:

200 OK 服务器成功处理请求

301/302 Moved Permanently(重定向)请求的URL已移走。响应报文中应该包含一个Location URL,说明资源现在所处的位置(301是永久移动,302是临时移动)

304 Not Modified(未修改) 客户的缓存资源是最新的,要客户端使用缓存内容

404 Not Found 未找到资源

501 Internal Server Error 服务器遇到错误,使其无法对请求提供服务

HTTP响应示例

HTTP/1.1 200 OK

Content-type: text/plainContent-length: 12Hello World!


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 特别在意别人的眼光怎么办 入职两个月没有业绩怎么办 在学舞蹈中孩子怕疼怎么办 我生二胎怕疼怎么办 孩子的执行力差怎么办 怀孕三个月不想要孩子怎么办 生完孩子老是掉头发怎么办 5岁半宝宝有狐臭怎么办? 4岁宝宝脾气倔怎么办 小孩子摔到后脑勺吐了怎么办 学生报告册丢了怎么办 错过宝宝语言敏感期怎么办 父亲骂我很难听怎么办 90后父母催婚怎么办 和隔壁邻居吵架了怎么办 教师上课期间孩子出问题责任怎么办 孩子一考试妈妈就焦虑怎么办 妈妈爱发脾气孩子也发脾气怎么办 孩子对家人有抵触情绪怎么办 孩子因为没耐心哭闹怎么办 宝宝哭闹真是没耐心怎么办 对自己孩子没耐心怎么办 跳了把腰伤了怎么办 爸爸对妈妈家暴怎么办 逆反心强23岁怎么办 觉得自己心理有问题怎么办 小孩心理脆弱过于敏感怎么办? 父母老是骂打我怎么办 爸妈打架闹离婚怎么办 夫妻离婚后孩子户口怎么办 离婚后孩子户口怎么办落户 50岁父母要离婚怎么办 父母离婚小孩没有出生证该怎么办 离婚。父母一直在劝说该怎么办 老婆跟人跑了怎么办啊 父母50了要离婚怎么办 父母吵架了我该怎么办 父母看孩子总是吵架怎么办 20岁父母离婚我怎么办 碰到没素质的人怎么办 父母抛弃了我该怎么办