HTTP协议请求方式:GET 和 POST区别

来源:互联网 发布:csgo如何优化弹道 编辑:程序博客网 时间:2024/05/19 03:21

 HTTP方法中两种最常用的 HTTP 方法是:GET 和 POST。

        一什么是 HTTP

        超文本传输协议(HTTP)的设计目的是保证客户端与服务器之间的通信。HTTP 的工作方式是客户端与服务器之间

的请求-应答协议。web 浏览器可能是客户端,而计算机上的网络应用程序也可能作为服务器端。

        客户端(浏览器)向服务器提交 HTTP 请求;服务器向客户端返回响应。响应包含关于请求的状态信息以及可能

被请求的内容。

        两种 HTTP 请求方法:在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST。

        (1)GET - 从指定的资源请求数据。

        (2)POST - 向指定的资源提交要被处理的数据。

        GET和POST区别表格:


        二表单(算作是客户端)提交代码:

[html] view plaincopyprint?
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml">  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  
  5. <title>HTML表单GET和POST提交方式演示</title>  
  6. </head>  
  7.   
  8. <body> <div align="center">  
  9.        <form id="form1" action="收到数据的页面.aspx" method="get">  
  10.        <!--另一种提交方式是将form标签的method属性的值改为“method="post"”-->  
  11.               <table border="1" bordercolor="#0000FF" cellpadding="10" cellspacing="0" width="600">  
  12.                       <tr>  
  13.                            <th colspan="2">注册表单</th>  
  14.                       </tr>  
  15.                       <tr>  
  16.                            <td>用户名称:</td>  
  17.                            <td>  
  18.                                 <input type="text" name="user" />  
  19.                            </td>  
  20.                       </tr>  
  21.                       <tr>  
  22.                            <td>输入密码:</td>  
  23.                            <td>  
  24.                                 <input type="password" name="psw" />  
  25.                            </td>  
  26.                       </tr>  
  27.                       <tr>  
  28.                            <td>确认密码:</td>  
  29.                            <td><input type="password" name="repsw" />  
  30.                                   
  31.                            </td>  
  32.                       </tr>  
  33.                       <tr>  
  34.                            <td>选择性别:</td>  
  35.                            <td>  
  36.                                 <input type="radio" name="sex" value="man" />男   
  37.                                 <input type="radio" name="sex" value="woman" />女  
  38.                            </td>  
  39.                       </tr>  
  40.                       <tr>  
  41.                            <td>选择技术:</td>  
  42.                            <td><input type="checkbox" name="technology" value="JAVA" />JAVA  
  43.                                <input type="checkbox" name="technology" value="HTML" />HTML  
  44.                                <input type="checkbox" name="technology" value="CSS" />CSS       
  45.                            </td>  
  46.                       </tr>  
  47.                       <tr>  
  48.                            <td>选择国家</td>  
  49.                            <td>  
  50.                                 <select name="country">  
  51.                                 <option value="none">--选择国家--</option>  
  52.                                 <option value="China">中国</option>  
  53.                                 <option value="USA">美国</option>  
  54.                                 <option value="UK">英国</option>  
  55.                         </select>  
  56.                            </td>  
  57.                       </tr>  
  58.                       <tr>  
  59.                            <th colspan="2">  
  60.                                 <input type="reset" value="清除数据" />  
  61.                                 <input type="submit" value="提交数据" />  
  62.                            </th>  
  63.                       </tr>  
  64.               </table>  
  65.        </form>  
  66.        </div>  
  67. </body>  
  68. </html>  
         我们在客户端这里看不出任何区别,但是表单提交给服务器端就会有明显的区别(也是最直接的区别):

         GET提交方式的地址栏:

         file:///C:/Users/Administrator/Desktop/收到数据的页

面.aspxuser=abc&psw=123&repsw=123&sex=man&technology=JAVA&country=China

         POST提交方式的地址栏:

         file:///C:/Users/Administrator/Desktop/收到数据的页面.aspx

        从上述的内容可以看出几点区别:

        (1)get 提交的信息都显示在地址栏中;post提交的信息不显示在地址栏中。

        (2)get提交对于敏感信息数据不安全;post提交对于敏感信息安全;

        (3)get提交对于大数据不行,因为地址栏存储的信息是有限的;post可提交大体积的数据。

        (4)get提交将信息封装到了请求信息的请求行中; post提交将信息封装到了请求体中;

        三在服务器端的区别

        如果出现将中文提交到tomcat服务器,服务器默认会用iso8859-1进行解码,会出现乱码,通过iso8859-1进行编

码,再用指定的中文表解码,即可;

        但对于post提交方式提交的中文还有另一种解决办法,就是直接使用服务端一个对象request对象的

setCharacterEncoding方法直接设置指定的中文代码表就可以将中文数据解析出来,这个方法只对请求中的数据进行

解码。

        四通过 get 或者 post 方法都可以获得 Form 的数据,两者主要区别在于以下几方面:

        (1)GET方式:

        URL 改变,在URL 里显示 HTML Form 参数的 name/value 值。

        只适合有少量参数的 HTML Form,因为 URL 长度有字符限制,不能无限长。

        涉及安全性的信息,比如用户密码,不能用 get,因为会在 URL 上显示,不安全。

        (2)POST方式:

        URL 不改变,不在 URL 里显示 HTML Form 的数据。

        Form 提交的信息没有长度限制。

        涉及安全性的信息,如用户密码,应采用 post 方式。

        五总结

        客户端和服务器端交互的三种方式:

        (1)地址栏输入url地址;get

        (2)超链接; get

        (3)表单; get 和 post

        GET和POST的优缺点:

        (1)Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据。 

        (2)Get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,而

各个变量之间使用“&”连接;Post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action

所指向URL。 
       (3)Get是不安全的,因为在传输过程,数据被放在请求的URL中,而如今现有的很多服务器、代理服务器或者用

户代理都会将请求URL记录到日志文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。另

外,用户也可以在浏览器上直接看到提交的数据,一些系统内部消息将会一同显示在用户面前。Post的所有操作对用

户来说都是不可见的。 

       (4)Get传输的数据量小,这主要是因为受URL长度限制;而Post可以传输大量的数据,所以在上传文件只能使用

Post(当然还有一个原因,将在后面的提到)。 

       (5)Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。默认是用ISO-8859-1

编码 。
       (6)Get是Form的默认方法。

       (7)get的执行效率要高于post。

       (8)对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取

提交的数据。

        目前不会做服务器端,因此难以提供更有效的数据论证。学习了服务器端,在进行更详细的理解。

0 0