Get跟post 到底有什么区别?到底那个更安全
在表单被提交到服务器的时候,有两种方式,get和post。那么什么叫get提交,什么叫post提交,他们有什么区别呢?那个安全性更高呢?以及如何使用它们。下边就给大家简单的介绍一下。
共同点:
Get提交和post提交都是将数据发送到服务器端,只是他们的提交的方式不一样!
区别:
get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTPpost机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
GET请求提交的数据有长度限制,POST请求没有限制。
GET方式引文数据较少,所以效率较高。而Post的效率则比较低!
GET请求返回的内容可以被浏览器缓存起来。而每次提交的POST,浏览器在你按下F5的时候会跳出确认框,浏览器不会缓存POST请求返回的内容。
GET对数据进行查询,POST主要对数据进行增删改!简单说,GET是只读,POST是写。
get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
Get提交浏览器会缓存服务器发送回来的信息。而post提交则不会被缓存!
Get提交的网页能被存为书签,post方式不能!
这些区别也是我们经常说的,但是在这里有一个误区,其实Http Get方法提交的数据大小长度并没有限制,而是IE浏览器本身对地址栏URL长度有最大长度限制:2083字符。详情请参见:http://support.microsoft.com/kb/208427/zh-cnMSDN权威。
安全性:
Get提交,将要提交的内容方法哦URL后边使用?进行连接。这种提交方式可能让一些用户看到一些保密信息,比如用户名,密码等信息。带来的一定的安全隐患。而post提交方式,是将请求的信息放到数据报中(请求体),其他人职能看到URL的信息,而不能看到别的信息。从而提高了安全性!
这就是我们最通常的认识。一天偶然看到了一篇博客,里边提到get方式也是安全的。因为我们提交的敏感信息,一般都是进行不可逆加密的!所以得到了页没有什么。他们安全性我们只考虑了用户而没有考虑服务器,post方式提交的数据的长度不受限制,所以黑客可以向服务器提交大量的数据,致使服务器忙于处理这些数据,而无暇处理用户的正常请求,到处服务器瘫痪!当我们使用get 提交的时候,不要提交一些敏感数据。
Get和post的使用:
以下为引用的内容:
<!--两个Form只有Method属性不同-->
<FORM ACTION=“getpost.php” METHOD=“get”>
<INPUT TYPE=“text” NAME=“Text” VALUE=“Hello World”></INPUT>
<INPUT TYPE=“submit” VALUE=“Method=Get”></INPUT>
</FORM>
<BR>
<FORM ACTION=“getpost.php” METHOD=“post”>
<INPUT TYPE=“text” NAME=“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.php?Text=Hello+World
而返回的结果是:
通过get方法传递来的字符串是: "Hello World"
最后再通过post方法提交,浏览器的url还是:
http://localhost/general/form/getpost.php?Text=Hello+World
而返回的结果变成:
通过get方法传递来的字符串是: "Hello World"
通过Post方法传递来的字符串是: "Hello World"
这两种提交方式,各有各的用途,看我们想要的是什么,然后在去选择。 希望这篇文章能对大家有所帮助!
- 1楼lfmilaoshi昨天 21:29
- 有比较才能有鉴别,在比较中,去分析,在比较中去学习,在比较中得到,更深一层的理解。