Get和Post的区别

浏览器是一个Socket客户端,将请求(请求报文)封装为socket(也可以在cmd中用telnet命令模拟浏览器发出请求),并将服务器返回的内容(响应报文)解析为html页面,CSS渲染等。请求和返回用http协议进行规范。

请求报文格式:image

请求报文示例:image

浏览器发送请求,有Get和Post两种方式。

如何查看网页是用Get还是Post呢?

可以用浏览器的开发工具查看到请求报文。

比如从chrome,F12打开开发工具,选择NetWork选项卡。在网页中点击刷新。

即可看到以下内容

image

点击weibo.com则可以看到详细报文

image

Get和Post区别:

1、Get:数据传递到后台是通过URL地址后面的参数传递,最大长度不能超过2Kb,数据暴露在URl地址上不安全。后台用context.request.QueryString["name"]获取

在IE中用HttpWatch可以看出。当使用表单使用Get的时候,参数会以Name=value&name2=value2的方式,放到请求报文的请求行里

image

2、Post:请求form而且method设置为post时候是post请求,后台可以用context.request.Form["name"]获取(get、post都可以用context.request[name"]获取,省略了QueryString、Form,实际上内部是从QueryString中找,找不到则用Form),推荐使用。

用Post提交,则不会放到请求行里

image

而是放到了请求体中

image

3、使用post提交的页面在点击【刷新】按钮的时候浏览器一般会提示“是否重新提交”,而get则不会;

4、用get的页面可以被搜索引擎抓取(如在百度输入关键字查询,把查询页收藏,这时候如果是post,则第二次打开无法记录关键字,所以需要用get,把关键字放到url中收藏),而用post的则不可以;

5、用post可以提交的数据量非常大,而用get可以提交的数据量则非常小(2k),受限于网页地址的长度。

6、用post可以进行文件的提交,而用get则不可以。

posted @ 2013-03-15 21:58  幻想领域  阅读(942)  评论(1编辑  收藏  举报