HTTP POST GET 本质区别

1       原理层面的区别

HTTP协议定义了与服务器交互的不同方法,最基本的4种:GETPOSTPUTDELETE

URL,即资源描述符,描述网络上的一个资源,上面的4种方法就对应着对这个资源的查,改,增,删。GET一般用于获取/查询资源信息,POST一般用于更新资源信息。这是协议设计的规范要求,但是实际中,由于种种原因,可能有情况没有严格遵照HTTP的规范。

2       表现形式层面的区别

HTTP协议的格式:

2.1      HTTP请求

<request line>

<headers>

<blank line>

<request-body>

 

在HTTP请求中,第一行必须是请求行,说明请求类型、要访问的资源以及使用的HTTP版本。接着是header小结,说明服务器要使用的附加信息。Header之后是一个空行,接着是可以添加热议其他数据的body。

 

GET请求实例:

GET /books?sex=man&name=ProfessionalHTTP/1.1

Host:www.wrox.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)Gecko/20050225 Firefox/1.0.1

Connection: Keep-Alive

 

POST 请求实例:

POST / HTTP/1.1

Host: www.wrox.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)Gecko/20050225 Firefox/1.0.1

Content-Type: application/x-www-form-urlencoded

Content-Length:40

Connection: Keep-Alive

(空一行)

 

Name=Professional%20Ajax&publisher=Wiley

 

两者提交方式的区别:

1.      GET 提交,请求的数据会附在URL之后,以?分割URL和传输数据,多个参数用&连接。如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BDURL编码格式采用ASCII码,也就是说url中不能包含非ASCII字符。

POST提交,把提交数据放在HTTP的body中,因此,GET提交的数据会在地址栏显示出来,而POST提交则不会显示。

2.      传输数据的大小

HTTP协议对传输数据的大小并没有限制,对URL长度也没有限制。

实际开发中存在的主要限制有:

GET:GET请求参数是作为一个key/value对的序列(查询字符串)附加到URL上,查询字符串的长度受到浏览器和服务器对URL长度的限制。因此GET提交时,传输数据会受到URL长度的限制。

POST:不通过URL传值,理论上数据不受限制,但是各Web服务器会规定POST提交数据大小的限制,Apache,IIS都有各自的配置。用来传输表单数据,content-type设置为:application/x-www-form-urlencoded.用来支持web窗体上的用户字段,其参数也是作为key/value对传输。

 

3.      安全性方面

POST比GET安全性好一些,GET提交的数据,将明文出现在URL上,不安全。

 

2.2      HTTP响应

HTTP响应格式:

<status line>

<headers>

<blank line>

[<response-body>]

 

响应中第一行是状态信息,状态行通过状态码说明所请求的资源情况。

 

响应实例:

 

HTTP/1.1 200 Ok

Date: Sat, 31 Dec 2005 23:59:59 GMT

Content-Type:text/html;charset=ISO-8859-1

Content-Length:122

html
<head
<title>Wrox Homepage</title>
</head
<body
<!-- body goes here --
</body
</html

 

常用状态码:

200OK):找到该资源,且一切正常

304NOT MODIFIED):该资源在上次请求之后没有任何修改,通常用于浏览器的缓存机制

401UNAUTHORIZED):客户端无权访问该资源。这通常使浏览器要求用户输入用户名密码。

403FORBIDDEN):客户端未能获得授权通常是401之后输入了不正确的用户名密码

404NOT FOUND):在指定的位置不存在所申请的资源

 

摘自: HTTP POST GET 本质区别详解 

http://blog.csdn.net/gideal_wang/article/details/4316691

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值