HTTP请求:GET与POST方法的区别(转)

HTTP 定义了与服务器交互的不同方法,最基本的方法是 GET 和 POST。事实上 GET 适用于多数请求,而保留 POST 仅用于更新站点。根据 HTTP 规范,GET 用于信息获取,而且应该是 安全的和 幂等的。所谓安全的意味着该操作用于获取信息而非修改信息。换句话说,GET 请求一般不应产生副作用。幂等的意味着对同一 URL 的多个请求应该返回同样的结果。完整的定义并不像看起来那样严格。从根本上讲,其目标是当用户打开一个链接时,她可以确信从自身的角度来看没有改变资源。 比如,新闻站点的头版不断更新。虽然第二次请求会返回不同的一批新闻,该操作仍然被认为是安全的和幂等的,因为它总是返回当前的新闻。反之亦然。POST 请求就不那么轻松了。POST 表示可能改变服务器上的资源的请求。仍然以新闻站点为例,读者对文章的注解应该通过 POST 请求实现,因为在注解提交之后站点已经不同了(比方说文章下面出现一条注解);
 
在FORM提交的时候,如果不指定Method,则默认为GET请求,Form中提交的数据将会附加在url之后,以?分开与url分开。字母数字字符原 样发送,但空格转换为“+“号,其它符号转换为%XX,其中XX为该符号以16进制表示的ASCII(或ISO Latin-1)值。GET请求请提交的数据放置在HTTP请求协议头中,而POST提交的数据则放在实体数据中;

GET方式提交的数据最多只能有2048 字节(URL+参数),而POST则没有此限制。
官方说明:http://support.microsoft.com/default.aspx?scid=kb;EN-US;q208427

 

使用post与使用get区别(asp)

一、 在Form 里面,可以使用post 也可以使用get 。它们都是method 的合法取值。但是,post 和get 方法在使用上至少有两点不同:

1 、 Get 方法通过 URL 请求来传递用户的输入。 Post 方法通过另外的形式。

2 、Get 方式时,服务器端需要使用 Request.QueryString 来取得变量的值;而 Post 方式时,服务器端通过 Request.Form 来访问提交的内容

 

仔细研究下面的代码。你可以运行之来感受一下:

 

代码

<!-- 两个 Form 只有 Method 属性不同 -->

<FORM ACTION=“getpost.asp” METHOD=“get”>

<INPUT TYPE=“text” VALUE=“Hello World”></INPUT>

<INPUT TYPE=“submit” VALUE=“Method=Get”></INPUT>

</FORM>

<BR>

<FORM ACTION=“getpost.asp” METHOD=“post”>

<INPUT TYPE=“text” VALUE=“Hello World”></INPUT>

<INPUT TYPE=“submit” VALUE=“Method=Post”></INPUT>

</FORM>

<BR>

<BR>

 

<% If Request.QueryString(“Text”) <> ““ Then %>

通过 get 方法传递来的字符串是: “<B><%= Request.QueryString( “Text ”) %></B> “<BR>

<% End If %>

 

<% If Request.Form(“Text”) <> ““ Then %>

通过 Post 方法传递来的字符串是: “<B><%= Request.Form( “Text ”) %></B> “<BR>

<% End If %>

 

说明

把上面的代码保存为getpost.asp ,然后运行,首先测试post 方法,这时候,浏览器的url 并没有什么变化,返回的结果是:

通过Post 方法传递来的字符串是: "Hello World"

然后测试用get 方法提交,请注意,浏览器的url 变成了:

http://localhost/general/form/getpost.asp?Text=Hello+World

而返回的结果是:

通过 get 方法传递来的字符串是: "Hello World"

最后再通过 post 方法提交,浏览器的 url 还是:

http://localhost/general/form/getpost.asp?Text=Hello+World

而返回的结果变成:

通过get 方法传递来的字符串是: "Hello World"

通过Post 方法传递来的字符串是: "Hello World"

 

提示

通过 get 方法提交数据,可能会带来安全性的问题。比如一个登陆页面。当通过 get 方法提交数据时,用户名和密码将出现在 URL 上。如果:

1、 登陆页面可以被浏览器缓存;

2、 其他人可以访问客户的这台机器。

那么,别人即可以从浏览器的历史记录中,读取到此客户的账号和密码。所以,在某些情况下, get 方法会带来严重的安全性问题。

 

建议 :在 Form 中,建议使用 post 方法。

 

二、 <form action="" method="post"> 刷新时会弹出提示框,问是否重新发送请求,若改为 method=get 则不会有该提示,以下是 post 和 get 的一些区别

 

 post 请求无长度限制(至少是理论上的)

 get 有长度限制,最长不超过2048 字节(1024 个汉字)

 

三、 还记得 Request.QueryString() 吗,只要是用 get 传递值,那么都会跟在 http 请求的串后面!可以试试!而 post 则不会在 http 请求串的后面,而是在请求的最后面!而且看不见的,一般密码可一定得这样传了,否则在地址栏里可以直接看见!!(虽然都不加密)

还有就是 post 传的内容多一些

再就是一般的用 IIS 过滤器的只接受get 参数,这就是为什么那些大型搜索引擎后面都是一大堆的内容了,因为 post 不能发过去,只能用 get 。看看 Goole 或是 yahoo 等知道了!

 

四、 表单提交中get 和post 方式的区别归纳如下几点:

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

2.  get 是把参数数据队列加到提交表单的 ACTION 属性所指的 URL 中,值和表单内各个字段一一对应,在 URL 中可以看到。 post 是通过 HTTP post 机制,将表单内各个字段与其内容放置在 HTML HEADER 内一起传送到 ACTION 属性所指的 URL 地址。用户看不到这个过程。

3. 对于 get 方式,服务器端用 Request.QueryString 获取变量的值,对于 post 方式,服务器端用 Request.Form 获取提交的数据。

4. get 传送的数据量较小,不能大于 2KB 。 post 传送的数据量较大,一般被默认为不受限制。但理论上, IIS4 中最大量为 80KB , IIS5 中为 100KB 。

5.  get 安全性非常低, post 安全性较高。

 

             

Get Post 的区别 ( jsp)

 

Get 和 Post 的区别好像比我想象中的大,最近在使用 Tomcat 进行开发的过程中至少发现两点:

 

一、这两者传递参数时所用的编码不一定是一样的。在 Tomcat 中似乎 Get 的编码方式是根据页面中指定的编码方式,而 Post 则是一直使用同一种编码方式,可在 Tomcat 的 server.xml 中配置。

 

二、使用 Get 的时候,参数会显示在地址栏上,而 Post 不会。

 

所以,如果这些数据是中文数据而且是非敏感数据,那么使用 get ;如果用户输入的数据不是中文字符而且包含敏感数据,那么还是使用 post 为好。

 

 

 

他们传递参数的时候编码不一样,get 方式不进行编码直接进行传递,所以别人可以看见你的传递内容(当然可以采取措施避免用户看到内容,比如用Javascript 动态组织URL ),post 方式是经过编码传输的,而且不存在特殊字符传递出错问题

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值