引用:
- HTTP 定义了与服务器交互的不同方法,最基本的方法是 GET 和 POST。事实上 GET 适用于多数请求,而保留 POST 仅用于更新站点。根据 HTTP 规范,GET 用于信息获取,而且应该是 安全的和 幂等的。所谓安全的意味着该操作用于获取信息而非修改信息。换句话说,GET 请求一般不应产生副作用。幂等的意味着对同一 URL 的多个请求应该返回同样的结果。完整的定义并不像看起来那样严格。从根本上讲,其目标是当用户打开一个链接时,她可以确信从自身的角度来看没有改变资源。比如,新闻站点的头版不断更新。虽然第二次请求会返回不同的一批新闻,该操作仍然被认为是安全的和幂等的,因为它总是返回当前的新闻。反之亦然。POST 请求就不那么轻松了。POST 表示可能改变服务器上的资源的请求。仍然以新闻站点为例,读者对文章的注解应该通过 POST 请求实现,因为在注解提交之后站点已经不同了(比方说文章下面出现一条注解);
- 在FORM提交的时候,如果不指定Method,则默认为GET请求,Form中提交的数据将会附加在url之后,以?分开与url分开。字母数字字符原样发送,但空格转换为“+“号,其它符号转换为%XX,其中XX为该符号以16进制表示的ASCII(或ISO Latin-1)值。GET请求请提交的数据放置在HTTP请求协议头中,而POST提交的数据则放在实体数据中;
- GET方式提交的数据最多只能有1024字节,而POST则没有此限制。
自已动手实现了一个简单的服务器,测试出的结果:
GET请求:
GET /test.html HTTP/1.1AAAA
GET%%%%%%%%%%%
./test.html$$$$$$
HTML> ^^^^^^^^^^^^^^^^^
HEAD> ^^^^^^^^^^^^^^^^^
META HTTP-EQUIV="Content-Type" content="text/html; content-length="7" charset=gb_2312-80"> ^^^^^^^^^^^^^^^^^
TITLE>Java Web服务器 </TITLE> ^^^^^^^^^^^^^^^^^
/HEAD> ^^^^^^^^^^^^^^^^^
BODY> ^^^^^^^^^^^^^^^^^
form action="test.html" method="post"> ^^^^^^^^^^^^^^^^^
INPUT type="text" name="username" value="eschool">^^^^^^^^^^^^^^^^^
button type="submit" name="btn" value="OK">^^^^^^^^^^^^^^^^^
h3>这是用JAVA写出的WEB服务器主页 </h3> ^^^^^^^^^^^^^^^^^
1998年8月28日 ^^^^^^^^^^^^^^^^^
hr> ^^^^^^^^^^^^^^^^^
/form>^^^^^^^^^^^^^^^^^
/BODY> ^^^^^^^^^^^^^^^^^
/HTML> ^^^^^^^^^^^^^^^^^
PPPPPP
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/x-shockwave-flash, application/x-silverlight, */*AAAA
Accept:%%%%%%%%%%%
Accept-Language: zh-cnAAAA
Accept-Language:%%%%%%%%%%%
UA-CPU: x86AAAA
UA-CPU:%%%%%%%%%%%
Accept-Encoding: gzip, deflateAAAA
Accept-Encoding:%%%%%%%%%%%
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; CIBA)AAAA
User-Agent:%%%%%%%%%%%
Host: 127.0.0.1:8082AAAA
Host:%%%%%%%%%%%
Connection: Keep-AliveAAAA
Connection:%%%%%%%%%%%
POST请求:
POST /test.html HTTP/1.1AAAA
POST%%%%%%%%%%%
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/x-shockwave-flash, application/x-silverlight, */*AAAA
Accept:%%%%%%%%%%%
Referer: http://127.0.0.1:8082/test.htmlAAAA
Referer:%%%%%%%%%%%
Accept-Language: zh-cnAAAA
Accept-Language:%%%%%%%%%%%
Content-Type: application/x-www-form-urlencodedAAAA
Content-Type:%%%%%%%%%%%
UA-CPU: x86AAAA
UA-CPU:%%%%%%%%%%%
Accept-Encoding: gzip, deflateAAAA
Accept-Encoding:%%%%%%%%%%%
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; CIBA)AAAA
User-Agent:%%%%%%%%%%%
Host: 127.0.0.1:8082AAAA
Host:%%%%%%%%%%%
Content-Length: 186AAAA
Content-Length:%%%%%%%%%%%
Connection: Keep-AliveAAAA
Connection:%%%%%%%%%%%
Cache-Control: no-cacheAAAA
Cache-Control:%%%%%%%%%%%