form的get与post方式的区别(转)
- form元素的method属性用来指定发送form的http方法
- 使用get时,form数据集被附加到form元素的action属性所指定的URL后面,仅仅是拼接一个URL,然后直接向服务区请求数据,需要提交给服务器的数据集包含在URL中。Get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,而各个变量之间使用“&”连接。
- 使用post时,form数据集被包装在请求的body中并发给服务器,然后向服务器请求数据。Post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL。
Get是用来从服务器上获得数据,而post是用来向服务器上传递数据
- get和post的区别
1 安全性
如果用get提交一个验证用户名和密码的form,一般认为是不安全的。因为用户名和密码将出现在URL上,进而出现在浏览器的历史记录中。显然,在对安全性有要求的情况下,应该使用post。
2 编码
HTML 4.01 specification指出,get只能向服务器发送ASCII字符,而post则可以发送整个ISO10646中的字符(如果同时指定enctype="multipart/form-data"的话)。
注意get和post对应的enctype属性有区别。enctype有两个值,默认值为application/x-www-form-urlencoded,而另一个值multipart/form-data只能用于post。
3 提交的数据的长度
HTTP specification并没有对URL长度进行限制,但是IE将请求的URL长度限制为2083个字符,从而限制了get提交的数据长度。测试表明如果URL超出这个限制,提交form时IE不会有任何响应。其它浏览器则没有URL的长度限制,因此其它浏览器能通过get提交的数据长度仅受限于服务器的设置。
而对于post,因为提交的数据不在url中,所以通常可以简单地认为数据长度限制仅受限于服务器的设置。
4 缓存
由于一个get得到的结果直接对应到一个URI,所以get的结果页面有可能被浏览器缓存。而post一般则不能,参考5。
5 引用和SEO
出于和上面相同的原因,我们可以用一个URI引用一个get的结果页面,而post的结果则不能,所以必然不能被搜索引擎搜到。
- 正确地使用get和post
W3C的官方建议是:当且仅当form是幂等(idempotent)的时候,使用get。幂等是一个数学上的术语,其定义是:对于一个函数f : D -> D,如果D中的所有x满足f (f x) = f x,那么这个函数是幂等的。HTTP specification(比如RFC 2616)中,将幂等解释为:多次相同请求产生的副作用,和一次请求的副作用相同。
打个比方,如果你提交一个form会从Google上查询一个关键词,那么我们可以认为这个form是幂等的,因为1次提交和10次提交的副作用是差不多的(10次查询可能会多消耗一些电能);如果你提交一个form是订购一个终极大黄蜂(Utimate bumblebee),那么这就不是幂等的:要是你不小心多提交了1次form的话,你可能会被老婆乱骂,你不小心又提交了10次的话,你可能就破产了——一次提交和多次提交的副作用明显不同,所以这不是幂等的。
所以,一般来说,如果提交这个请求纯粹只是从服务端获取数据而不进行其他操作,并且多次提交不会有明显的副作用,应该使用get。比如:
搜索引擎的查询:http://www.google.com/search?q=yandixin;
分页:ArticleList.asp?Page=1。
如果提交这个请求会产生其它操作和影响,就应该使用post。比如:修改服务器上数据库中的数据; 发送一封邮件;删除一个文件。
转载于:https://www.cnblogs.com/whytohow/p/4776957.html
form的get与post方式的区别(转)相关推荐
- form表单的提交方式(get和post的区别)
form表单的提交方式 请求方式有:POST.GET.OPTIONS.DELETE.TRACE.PUT.CONNECT 主要请求方式 form表单提交方式有很多,常用的有post和get post和g ...
- 表单提交中Get和Post方式的区别及EncType表明提交数据的格式详解
表单提交中Get和Post方式的区别 1. get是从服务器上获取数据,post是向服务器传送数据. 2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对 ...
- JSP中get和post请求方式的区别及乱码解决方法
JSP中get和post请求方式的区别及乱码解决方法 get提交方式:默认method="get" 和 地址栏.超链接请求方式默认都属于get提交方式 form表单的method属 ...
- POST—GET—两种提交方式的区别
主要区别: 安全性 长度限制 数据结构. 总结起来: get方式:以URL字串本身传递数据参数,在服务器端可以从UERY_STRING'这个变量中直接读取,效率较高,但缺乏安全性,也无法来处理复杂的数 ...
- post和get请求方式的区别
post和get请求方式的区别 表单提交中get和post方式的区别有5点: 1.get是从服务器上获取数据,post是向服务器传送数据.2.get是把参数数据队列加到提交表单的ACTION属性所指的 ...
- ajax 请求的时候 get 和 post 方式的区别?
ajax 请求的时候 get 和 post 方式的区别? GET请求会将参数跟在URL后进行传递,而POST请求则是作为HTTP消息的实体内容发送给WEB服务器. GET请求有数据长度限制(大约是2K ...
- 表单提交中get和post方式的区别
表单提交中get和post方式的区别有5点 1.get是从服务器上获取数据,post是向服务器传送数据. 2.get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段 ...
- request.form()和request()和request.data的区别
Request.Form:获取以POST方式提交的数据(接收Form提交来的数据): Request.QueryString:获取地址栏参数(以GET方式提交的数据) Request:包含以上两种方式 ...
- 模型评估指标micro avg、macro avg和weighted avg的计算方式及区别
模型评估指标micro avg.macro avg和weighted avg的计算方式及区别-技术圈
最新文章
- 设置user-agent骗过服务端安全检查
- 机器人日行十万步却无需动力源!究竟如何完美的机械结构让你开始怀疑人身...
- 详解集合之HashMap——HashMap内部结构,自动扩容机制,为什么需要重写hashcode和equals方法
- 里能嵌jquery吗_白芸豆里的淀粉阻断成分,能帮助减肥是真的吗?
- Cesium中常用的一些地理数据文件 以及数据相关的东西
- 在家办公上课成强需求 钉钉峰值流量暴增百倍
- 数据挖掘:数据预处理相关概念
- Apple在线商店iphone5, ipad mini到货提醒 - 邮件
- 手工配置Service的过程中。
- Android混淆和加固详解
- 安装NET Framework 错误代码0x800F081F怎么解决
- 智能电子后视镜MFC01-LCD通用版 使用说明与简单故障排查
- KEPServer EX6的Modbus、MQTT和REST Server一站式配置整理说明
- Midjourney之外21款免费的AI Image画图网站集合
- Elasticsearch学习笔记(三)安装hanlp中文分词插件及同义词配置
- 网络状态码(HTTP状态码 )
- c语言画伯努利分布图像,C++ - 随机生成器 伯努利分布(bernoulli distribution) 的 详解 及 代码...
- 线性表-链式存储结构
- go依赖包下载加速方法及github加速
- 前端基础(五)_CSS文本文字属性、背景颜色属性
热门文章
- html圆如何找到垂直中心线,一种用于找中心线及圆心的装置的制作方法
- android 跑windows软件,Windows 10 Mobile用户现可让设备跑上Android软件
- sklearn knn 算法
- 安装LoadRunner 11时弹窗提示Micosoft Visual C++ 2005 SP1 可再发行组件包(X86):'命令行选项语法错误。键入命令 / ? 可获得帮助信息'。
- Div层悬浮实现HTML5 Canvas背景动画
- 自动化设计-框架介绍 TestCase
- 为什么要设计好目录结构?
- 在阿里云上遇见更好的Oracle(四)
- 网站开发笔记【四】css hack技术
- [原创]一个shell小案例