Get和Post的区别

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

请求报文格式:
[img]http://images.cnitblog.com/blog/457805/201303/15215709-2f9a625870964aa18d8e28d27442fb92.gif[/img]

请求报文示例:
[img]http://images.cnitblog.com/blog/457805/201303/15215715-8f9115e3934546668970d8a6eb9feef5.png[/img]

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

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

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

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

即可看到以下内容

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

[img]http://images.cnitblog.com/blog/457805/201303/15215725-05d5023ff9b54184b636d5218dd0a0c5.png[/img]

Get和Post区别:

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

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

[img]http://images.cnitblog.com/blog/457805/201303/15215725-05d5023ff9b54184b636d5218dd0a0c5.png[/img]

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

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

[img]http://images.cnitblog.com/blog/457805/201303/15215727-c48a931455bc4875aa115d60a5ae6f62.png[/img]

而是放到了请求体中

[img]http://images.cnitblog.com/blog/457805/201303/15215729-5e92b26be6164780837a1727ceabc43a.png[/img]

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

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

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

6、用post可以进行文件的提交,而用get则不可以。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值