Get和Post的区别

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

请求报文格式:
Get和Post的区别_第1张图片

请求报文示例:
Get和Post的区别_第2张图片

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

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

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

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

即可看到以下内容

[img]http://images.cnitblog.com/blog/457805/201303/15215719-34e2feb9e0f0417cab1dba470e31ca1b.png
[/img]
点击weibo.com则可以看到详细报文

Get和Post的区别_第3张图片

Get和Post区别:

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

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

Get和Post的区别_第4张图片

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

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



而是放到了请求体中

Get和Post的区别_第5张图片

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

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

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

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

你可能感兴趣的:(浏览器,post,get)