网络学习日志(三)--http协议中的get和post

上一篇 / 下一篇  2009-07-29 11:26:46 / 个人分类:网络

get和post


概述:

前面的http协议介绍中已经学到了,http协议结构如下:

<request line>

<headers>

空行

[<content>]

request line 用来说明请求类型、要访问的资源,以及http版本;

headers是服务器要使用的附加信息,如charset、connection等;

下面是两个例子,分别使用get、post请求方式

GET /index.php?uid-22578-action-viewspace-itemid-141083 HTTP/1.1
Accept: image/gif, image/jpeg, image/pjpeg, application/xaml+xml, */*
Accept-Language: zh-cn
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host:www.51testing.com
Connection: Keep-Alive

POST /batch.comment.php HTTP/1.1
Accept: image/gif, image/jpeg, image/pjpeg, application/xaml+xml, */*
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host:www.51testing.com
Content-Length: 169
Connection: Keep-Alive

rates=0&message=%B1%C8%BD%CF%BC%F2%B5%A5%B5%C4%D2%BB%D0%A9%B3%A3%D3%C3sql%D3%EF%BE%E4&nickname=angelets&seccode=3878&itemid=141083&submitcomment=%CC%E1%BD%BB%C6%C0%C2%DB

可以看到,上面的get只是在请求一个html页面的浏览,无数据提交;

而post是有content内容的rates=后面的部分,可以看到nickname=angelets,密码、提交的submitcomment是已经加密过的;

下面说一下post和get在使用中的一些区别:

(1)  在客户端,Get方式通过URL提交数据,数据URL中可以看到;POST方式,数据放置在entity content内提交。

(2)  GET由于是通过url提交数据的,因此数据大小受浏览器客户端的限制(微软support网站上说:Microsoft Internet Explorer has a maximum uniform. resource locator (URL) length of 2,083 characters)最多只能有2083字节。而POST不通过url提交数据,理论上数据不受限。但实际各个WEB服务器会规定对post提交数据大小进行限制,例如,tomcat默认设置为2M。

(3)  安全性问题。正如在(1)中提到,使用Get的时候,参数会显示在地址栏上,而Post不会。所以,如果这些数据是中文数据而且是非敏感数据,那么使用get;如果用户输入的数据不是中文字符而且包含敏感数据,那么还是使用post为好。

(4)  安全的和幂等的。所谓安全的意味着该操作用于获取信息而非修改信息。幂等的意味着对同一URL的多个请求应该返回同样的结果完整的定义并不像看起来那样严格换句话说GET请求一般不应产生副作用从根本上讲,其目标是当用户打开一个链接时,她可以确信从自身的角度来看没有改变资源比如,新闻站点的头版不断更新虽然第二次请求会返回不同的一批新闻该操作仍然被认为是安全的和幂等的因为它总是返回当前的新闻反之亦然。POST请求就不那么轻松了POST表示可能改变服务器上的资源的请求仍然以新闻站点为例,读者对文章的注解应该通过POST请求实现,因为在注解提交之后站点已经不同了(比方说文章下面出现一条注解)。
http://www.cnblogs.com/stu-acer/archive/2006/08/28/488802.html

(5)表单提交中的post和get。

    get是从服务器上获取数据,post是向服务器传送数据。

     对于表单的提交方式,在服务器端只能用Request.QueryString来获取Get方式提交来的数据,用Post方式提交的数据只能用Request.Form来获取。

     一般来说,尽量避免使用Get方式提交表单,因为有可能会导致安全问题。比如说在登陆表单中用Get方式,用户输入的用户名和密码将在地址栏中暴露无遗。但是在分页程序中,用Get方式就比用Post好。

 


TAG:

 

评分:0

我来说两句

Open Toolbar