博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
post和get的区别
阅读量:5226 次
发布时间:2019-06-14

本文共 3788 字,大约阅读时间需要 12 分钟。

post
和get的区别

post 
地址栏不会出现一大串?bjnghfgreygt这样的东西
如果是get,就会出现了
1、Get 方法通过 URL 请求来传递用户的数据,将表单内各字段名称与其内容,以成对的字符串连接,置于 action 属性所指程序的 url 后,如[url]http://www.mdm.com/test.asp?name=asd&password=sad[/url],数据都会 直接显示在 url 上,就像用户点击一个链接一样;Post 方法通过 HTTP post 机制,将表单内各字段名称与其内容放置在 HTML 表头(header)内一起传送给服务器端交由 action 属性能所指的程序处理,该程序会通过标准输入(stdin)方式,将表单的数据读出并加以处理
2、 Get 方式需要使用 Request.QueryString 来取得变量的值;而 Post 方式通过 Request.Form 来访问提交的内容
3、Get 方式传输的数据量非常小,一般限制在 2 KB 左右,但是执行效率却比 Post 方法好;而 Post 方式传递的数据量相对较大,它是等待服务器来读取数据,不过也有字节限制,这是为了避免对服务器用大量数据进行恶意攻击,根据微软方面的说法,微软对用 Request.Form() 可接收的最大数据有限制,IIS 4 中为 80 KB 字节,IIS 5 中为 100 KB 字节
建议:除非你肯定你提交的数据可以一次性提交,否则请尽量用 Post 方法
4、Get 方式提交数据,会带来安全问题,比如一个登陆页面,通过 Get 方式提交数据时,用户名和密码将出现在 URL 上,如果页面可以被缓存或者其他人可以访问客户这台机器,就可以从历史记录获得该用户的帐号和密码,所以表单提交建议使用 Post 方法;Post 方法提交的表单页面常见的问题是,该页面如果刷新的时候,会弹出一个对话框
建议:出于安全性考虑,建议最好使用 Post 提交数据

 
post和get的不同之处
GET与POST的区别在于:(对于CGI)
如果以GET方式传输,所带参数附加在CGI程式的URL后直接传给server,并可从server端的QUERY_STRING这个环境变量中读取;
如果以POST方式传输,则参数会被打包在数据报中传送给server,并可从CONTENT_LENGTH这个环境变量中读取出来。
还有一种情况是,你用的是GET方式,但传送的参数是路径,如:
----< ahref="/cgi-bin/a.pl/usr/local/bin/pine" >CGI< /a >
----这时所传递的参数"/usr/local/bin/pine"存放在PATH_INFO这个环境变量中。环境变量的读取方式为$str=$ENV{'QUERY_STRING'};
理论上说,GET是从服务器上请求数据,POST是发送数据到服务器。事实上,GET方法是把数据参数队列(query string)加到一个URL上,值和表单是一一对应的。比如说,name=John。在队列里,值和表单用一个&符号分开,空格用 号替换,特殊的符号转换成十六进制的代码。因为这一队列在URL里边,这样队列的参数就能看得到,可以被记录下来,或更改。通常GET方法还限制字符的大小。事实上POST方法可以没有时间限制的传递数据到服务器,用户在浏览器端是看不到这一过程的,所以POST方法比较适合用于发送一个保密的(比如信用卡号)或者比较大量的数据到服务器。
Post是允许传输大量数据的方法,而Get方法会将所要传输的数据附在网址后面,然后一起送达服务器,因此传送的数据量就会受到限制,但是执行效率却比Post方法好。
对于GET提交的数据,WWW服务器将把数据放在环境变量QUERY_STRING中;对于POST方法,数据被送到WWW服务器的STDOUT中,然后CGI从自己的STDIN中读取。使用传统的CGI方法,用户必须自己编程来处理这些数据。
GET与POST的区别在于,如果以GET方式传输,所带参数附加在CGI程式的URL后直接传给server,并可从server端的QUERY_STRING这个环境变量中读取;如果以POST方式传输,则参数会被打包在数据报中传送给server,并可从CONTENT_LENGTH这个环境变量中读取出来。还有一种情况是,你用的是GET方式,但传送的参数是路径,如: 
----< ahref="/cgi-bin/a.pl/usr/local/bin/pine" >CGI< /a > 
----这时所传递的参数"/usr/local/bin/pine"存放在PATH_INFO这个环境变量中。环境变量的读取方式为$str=$ENV{'QUERY_STRING'};
总结起来:
get方式:以URL字串本身传递数据参数,在服务器端可以从'QUERY_STRING'这个变量中直接读取,效率较高,但缺乏安全性,也无法来处理复杂的数据(只能是字符串,比如在servlet/jsp中就无法处理发挥java的比如vector之类的功能);
post方式:就传输方式讲参数会被打包在数据报中传输,从CONTENT_LENGTH这个环境变量中读取,便于传送较大一些的数据,同时因为不暴露数据在浏览器的地址栏中,安全性相对较高,但这样的处理效率会受到影响。
-------------------
 
在表单里使用”post””get”有什么区别
Form
里面,可以使用
post
也可以使用
get
。它们都是
method
的合法取值。但是,
post
get
方法在使用上至少有两点不同:
1
Get
方法通过
URL
请求来传递用户的输入。
Post
方法通过另外的形式。
2
Get
方式的提交你需要用
Request.QueryString
来取得变量的值,而
Post
方式提交时,你必须通过
Request.Form
来访问提交的内容。
仔细研究下面的代码。你可以运行之来感受一下:
代码
<!--
两个
Form
只有
Method
属性不同
-->
<FORM ACTION=“getpost.” METHOD=“get”>
<INPUT TYPE=“text” NAME=“Text” VALUE=“Hello World”></INPUT>
<INPUT TYPE=“submit” VALUE=“Method=Get”></INPUT>
</FORM>
<BR>
<FORM ACTION=“getpost.” 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.
,然后运行,首先测试
post
方法,这时候,浏览器的
url
并没有什么变化,返回的结果是:
通过
Post
方法传递来的
串是:
 "Hello World"
然后测试用
get
方法提交,请注意,浏览器的
url
变成了:
http://localhost/general/form/getpost.?Text=Hello+World
而返回的结果是:
通过
get
方法传递来的
串是:
 "Hello World"
最后再通过
post
方法提交,浏览器的
url
还是:
http://localhost/general/form/getpost.?Text=Hello+World
而返回的结果变成:
通过
get
方法传递来的
串是:
 "Hello World"
通过
Post
方法传递来的
串是:
 "Hello World"
提示
通过
get
方法提交数据,可能会带来安全性的问题。比如一个登陆页面。当通过
get
方法提交数据时,用户名和密码将出现在
URL
上。如果:
1、
登陆页面可以被浏览器缓存;
2、
其他人可以访问客户的这台机器。
那么,别人即可以从浏览器的历史记录中,读取到此客户的账号和密码。所以,在某些情况下,
get
方法会带来严重的安全性问题。
建议
Form
中,建议使用
post
方法。

转载于:https://www.cnblogs.com/javaexam2/archive/2012/07/31/2632446.html

你可能感兴趣的文章
关于ajax回调数据类型为Json,如何获得他的值
查看>>
前端各种mate积累
查看>>
jQuery 1.7 发布了
查看>>
Python(软件目录结构规范)
查看>>
Windows多线程入门のCreateThread与_beginthreadex本质区别(转)
查看>>
Nginx配置文件(nginx.conf)配置详解1
查看>>
linux php编译安装
查看>>
name phone email正则表达式
查看>>
721. Accounts Merge
查看>>
Python之Split函数
查看>>
Linux下使用pip安装keras
查看>>
OpenCv-Python 图像处理基本操作
查看>>
博物院与国宝
查看>>
vmware tools 的安装(Read-only file system 的解决)
查看>>
数列求和总结
查看>>
「Unity」委托 将方法作为参数传递
查看>>
重置GNOME-TERMINAL
查看>>
new jordans 9 Nets
查看>>
redis哨兵集群、docker入门
查看>>
正则表达式2
查看>>