Get和Post的区别

来源:互联网 发布:手机淘宝抢购软件 编辑:程序博客网 时间:2024/05/01 00:20

浏览器是一个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则不可以。


<script type="text/javascript"><!--google_ad_client = "ca-pub-1944176156128447";/* cnblogs 首页横幅 */google_ad_slot = "5419468456";google_ad_width = 728;google_ad_height = 90;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击