1 原理层面的区别
HTTP协议定义了与服务器交互的不同方法,最基本的4种:GET,POST,PUT,DELETE
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%BD。URL编码格式采用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>
常用状态码:
200(OK):找到该资源,且一切正常
304(NOT MODIFIED):该资源在上次请求之后没有任何修改,通常用于浏览器的缓存机制
401(UNAUTHORIZED):客户端无权访问该资源。这通常使浏览器要求用户输入用户名密码。
403(FORBIDDEN):客户端未能获得授权通常是401之后输入了不正确的用户名密码
404(NOT FOUND):在指定的位置不存在所申请的资源
http://blog.csdn.net/gideal_wang/article/details/4316691