Get和Post与服务器交互的区别

Asp.net2.0系列(十一):Get和Post与服务器交互的区别
2008-03-27 17:34

HTTP 定义了与服务器交互的不同方法,最基本的方法是 GET POST首先来走个实验,一个页面传值GetPost.aspx,另一个页面接收值GetValue.aspx

 

//GetPost.aspx前台:

 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GetPost.aspx.cs" Inherits="GetPost" %>

 

 

 

<!DOCTYPE html PUBLIC "-//W 3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

 

 

<html xmlns="http://www.w3.org/1999/xhtml" >

 

<head runat="server">

 

    <title>无标题页</title>

 

</head>

 

<body>

 

    <form id="form1" method="get" action="GetValue.aspx" >

 

    <div>

 

    <input TYPE="text" name="Text" value="Get: Hello World"></input>

 

 

 

<input type="submit" value="Method=Get"></input>

 

 

 

 

 

    </div>

 

    </form>

 

      <form id="form2" method="post" action="GetValue.aspx" >

 

    <div>

 

   <input type="text" NAME="Text" VALUE="Post: Hello World"></input>

 

 

 

<input type=submit VALUE="Method=Post"></input>

 

 

 

 

 

 

 

 

 

    </div>

 

    </form>

 

</body>

 

</html>

 

//GetValue.aspx后台:

 

if (Request.QueryString.Count != 0)

 

        {

 

            this.Label1.Text = Request.QueryString["Text"].ToString();

 

        }

 

        else

 

        {

 

            this.Label1.Text = Request.Form["Text"].ToString();

 

        }

 

分别点击GetPost.aspx页面上的按钮,根据得出getpost的区别:

 

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

 

2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。GetPost.aspxURL地址改变了,后面带上了参数?Text=Get% 3A+Hello+World,传递的多个参数以&连接,如字母数字字符原样发送,但空格转换为“+“号,其它符号转换为%XX,其中XX为该符号以16进制表示的ASCII(或ISO Latin-1)值。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。URL地址栏没发生改变,用户看不到这个过程。

 

3. 对于get方式,服务器端用Request.QueryString["Text"].ToString()获取变量的值,对于post方式,服务器端用Request.Form["Text"].ToString()获取提交的数据。但同时可以使用Request["Text"].ToString(),只是Request效率不高,不推荐使用。

 

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

 

5. get安全性非常低,post安全性较高。因为get将传输的值显示在url上了,所以不安全,建议一般用post传值

 

6. post刷新getvaluse.aspx时会弹出提示框,问是否重新发送您以前提交的信息,get不会。

7如果不设定method,经过测试,表单将默认为get

你可能感兴趣的:(html,XHTML,服务器,url,input,action)