浏览器是一个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则不可以。
请求报文格式:
[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则不可以。