一、原理区别
HTTP定义了与服务器交互的不同方式,其中最基本的方法有4种:GET、POST、PUT、DELETE,分别对应着资源的查、改、增、删4个操作。由此,GET一般用于查询/获取资源信息,而POST一般用于更新/修改资源信息。其中,采用URL(Uniform Resource Locator,统一资源定位符)地址来描述一个网络上的资源。每个信息资源都有统一且在网上唯一的地址。
对于GET方法来说,是用于信息获取,而且是安全的和幂等的
安全的意味着该操作仅是用于获取信息而非修改信息,不会影响信息资源的状态;
幂等的意味着该操作对同一URL的多个请求应该返回同样的结果。
二、表现形式区别
1、GET是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。POST是通过HTTP POST机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL中,用户看不到这个过程。
2、对于GET方式,服务器端用Request.QueryString获取变量的值;对于POST方式,服务器端用Request.Form获取提交的方式。
3、GET传送的数据量较小,不能大于2KB;POST传送的数据量较大,一般被默认为不受限制,但理论上,IIS4中最大数据量为80KB,IIS5中最大数据量为100KB。
4、 GET安全性较低,POST安全性较高
比如,在进行登录操作时,通过GET请求,用户名和密码都会暴露在URL上,因为登录页面有可能被浏览器缓存以及其他人查询浏览器的历史记录的原因,此时用户名和密码很容易被其他人拿到。
HTTP是基于TCP/IP的关于数据如何在万维网中进行通信的协议,其底层是TCP/IP,所以GET/POST的底层也是TCP;
对于GET,浏览器会把HTTP HEADER和DATA一并发送出去,服务器响应200 ok(返回数据);
对于POST,浏览器先发送HEADER,服务器响应100 continue,浏览器再发送DATA,服务器响应200 ok(返回数据)。
三、HTTP状态码
状态码(status code)描述了请求过程中发生的情况
常见的HTTP状态码及其含义如下:
200---OK 服务器成功处理请求
301---Moved Permanently 资源(网页等)被永久移到其他URL
302---Found 资源(网页等)被临时移到其他URL
404---Not Found 未找到资源
500---Internal Server Error 服务器内部错误,无法完成请求
501---Not Implemented 服务器不支持请求的功能,无法完成请求