HTTP 协议中的GET 和POST 的区别

1. Http 请求由四部分组成:
1. 请求行
2. 消息报头
3. 一个空行
4. 请求正文
HTTP 协议中的GET 和POST 的区别
2.请求行:
Method Request-Url Http-Version 回车
Method GET,POST,Head,Put,Delete

Request-Url :请求站点

Http-Version1.1 or 1.0

3. GET

当我们在浏览器中输入网址并敲回车时,浏览器使用GET的方式去访问网址

Form 表单中默认的就是GET 提交方式

GET Request-Url HTTP/1.1

Request-Url ? Name1 = value1 & Name2 =value2

由于GET 的参数放在 请求行中的,所以参数长度有限制。长度为数个KB

下面是一个在浏览器访问 www.taobao.com 的请求信息截图。

HTTP 协议中的GET 和POST 的区别

再来一个附带参数GET请求的截图

HTTP 协议中的GET 和POST 的区别

4. POST

通常用来将表单的数据提交到Request-Url

POST Request-Url HTTP/1.1

消息报头

空行

Name1 = value1 & Name2 =value2& Name3 = value3 & Name4=value4

HTTP 协议中的GET 和POST 的区别

POST 的参数请求正文里,所以POST 参数的长度不受限制,但受服务器处理的限制。POST 传递的参数不会在浏览器地址栏里显示,也就不会暴露传递的参数。

通常情况下,可以借助于Firefox + Firebug 来查看请求信息:

例如:用户在以POST 提交表单时,由在URL后面接了一些参数。那么这个请求是GET 请求还是POST 请求呢?服务器是把这个请求当作GET 还是POST 来对待呢?

我在淘宝网注册一个用户

HTTP 协议中的GET 和POST 的区别

提交信息后,通过Firebug 的截图,可以看到,这个请求是以POST 方式提交的。

HTTP 协议中的GET 和POST 的区别
不过这个时候我们看到这个POST请求的URL 后面还附带了一些参数: tg=&&rdn=&timearg=u&tt=0
HTTP 协议中的GET 和POST 的区别
不过我们看到POST 里附带的是刚才我注册时填写的一些注册信息 nihaonihao77 等。
而在HTTP 协议中的GET 和POST 的区别
而在“参数”标签中,我们可以看到 URL 后面附带的所有参数。
纯GET 方式提交的信息中有“头信息,响应,缓存”
带参数的GET 方式提交信息“参数,头信息,响应,缓存”
纯POST 方式提交的信息中有“头信息,POST,响应,缓存,HTML”
第三种方式提交的信息有“参数,头信息,post,响应,HTML”
从上面的比较可以看出,但一个POST 请求的URL 后面还附带了参数,那么这个请求还是POST 请求,不过浏览器还是会在URL后面附上参数。