ASP.NET 表单验证方法与客户端(浏览器)服务器交互机制的故事
想到这个问题完全是一个意外吧,是在寻找另外一个问题答案的过程中,才对验证方法与浏览器服务器交互机制的关系有了清晰的认识。
先说下验证方法,验证方法分为前台验证和后台验证。
前台验证就是类似jQuery.Validate这类的插件,当然也可以我们自己写。
后台验证就是ASP.NET自带的验证控件,如RequiredFieldValidator。
记得初学.NET的时候,那会儿接触验证控件,也知道验证分为前台,后台。但是随着时间的推移,由于做的项目基本上都是公司内部使用的软件,比如OA。因为这种项目对安全性要求没有那么高。所以追随着老员工直接就用前台验证去做每个项目,代替的是慢慢的忘记了两者是有不同的这个事实。直到昨天,才好像唤起了以前的记忆,恍然大悟的感觉。
对于验证,如果我们同时加前台验证和后台验证,这样会使项目的安全性提高,但相对的来说,会消耗一些性能。选择哪样就要看你更需要哪样。
再说下客户端(浏览器)服务器交互机制
有点大白话:浏览器会封装一个请求报文(可以理解为信),发给服务器,服务器解析这个报文,进行重组,生成一个响应报文,回发给浏览器
(回信),浏览器收到后再对其进行解析,就生成了我们看到的网页和一些我们看不到的数据。它们之间的通信都是遵循HTTP协议。
那两者会有怎样的“故事”呢?
是这样的,如果我只使用前台验证,也就是在我点击提交按钮之后,浏览器封装请求报文之前去验证,如果发现有不合格的地方,就直接提示错误,也就不会有之后的请求报文,也就不会与服务器有交互的动作,所有动作都是在客户端本地去做的。
如果只使用后台验证,那么无论表单上的内容合格不合格,这个请求报文是指定发出去了,服务器收到后去做验证,之后把验证结果返给浏览器。
所以说前台验证安全性差,后台验证安全性强,但是会增加服务器端的负荷。
通常如果项目是内部使用的,如OA之类的,其实完全可以只使用前台验证,这就明白了为什么单位的老员工都只写前台验证方法了。
如果项目是对外使用的话,那么就用后台验证就可以了,不过加上前台验证的话,会更好一些,因为加了前台验证,会大大减轻服务器的负荷,比如验证个非空,就可以直接在前台干掉,不用访问服务器。如果验证与数据相关,那样才有必要访问服务器。
这就是它和它的故事,比较基础的知识点,作为一个记录,高手勿喷~
ASP.NET 表单验证方法与客户端(浏览器)服务器交互机制的故事的更多相关文章
- SharePoint2010基于表单验证方法总结(转载)
系统环境: win2008r2+ sql2008r2 +Visual Studio2010+sharepoint 2010 A.如果已经建立了web application 例如名字为: http: ...
- ASP.NET 表单验证实现浅析
首先,自然是配置 Web.config,在 <system.web> 下设定: <authentication mode="Forms"> <form ...
- 原生js制作表单验证,基本的表单验证方法
表单验证是web前端最常见的功能之一,也属于前端开发的基本功.自己完成一个表单验证的开发,也有助于加深对字符串处理和正则表达式的理解. 基本的表单验证包括如:字母验证.数字验证.字母和数字验证.汉字验 ...
- jquery的表单验证方法,一个function能不能同时捕捉点击事件和按键事件?能不能再优化下,有代码。
// 该jquery扩展引自 http://www.ghostsf.com/tools/389.html 方法名是作者博客的命名 $.fn.ghostsf_serialize = function ( ...
- Model中设置表单验证方法
Model类里面定义$_validate属性支持的验证因子格式: 格式:array(验证字段,验证规则,错误提示,验证条件,附加规则,验证时间). 验证条件: (1)Model::EXISTS_TO_ ...
- ASP.NET 表单验证
静态脚本 oncilentClick() 静态使用方法 也可以$获取ID动态添加脚本 1.Response.Write(); 2.通过Register方式 3.Attribus方式根据控件ID进行添加 ...
- 常用JS表单验证方法
/*输入:str返回:如果全是空返回true,否则返回false*/function isNull(str) {if (str == "") return true;var reg ...
- 常用javascript表单验证方法
//座机电话验证(支持分机) function chekeTel(tel) { var Tel = /^\d{3,4}-\d{7,8}(-\d{3,4})?$/; if (Tel.test(tel)) ...
- js 表单验证方法二
function ckReight () { var pass = true; var new = $("#new"); if( new.find('input[name=name ...
随机推荐
- 【OCP-12c】2019年CUUG OCP 071考试题库(73题)
73.Which statement correctly grants a system privilege? A. GRANT CREATE VIEW ON table1 TO user1; B. ...
- “全栈2019”Java第九十章:内部类可以向上或向下转型吗?
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- jquery分页插件pagination
参考1:https://www.cnblogs.com/jingping/p/3925976.html 参考2:https://segmentfault.com/a/1190000014487357 ...
- Mysql Insert Or Update语法实例
有的时候会需要写一段insert的sql,如果主键存在,则update:如果主键不存在,则insert.Mysql中提供了这样的用法:ON DUPLICATE KEY UPDATE.下面就看看它是如何 ...
- CentOS7打开关闭防火墙与端口
http://www.javahelp.com.cn/h-nd-747.html#_np=153_1707
- Go语言指针
指针简介 (Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值.由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元.因此,将 ...
- Apache Maven的入门使用之常用操作以及核心概念介绍(2)
我们接着上篇文章,来继续介绍Maven中几个核心的概念: POM (Project Object Model) Maven 插件 Maven 生命周期 Maven 依赖管理 Maven 库 POM ( ...
- 【第2次会议记录_2018.5.27】—— [ 算法原理 ]:手工特征提取的概念问题。(by_wanghao)
1.提取 特征点 .特征描述子 与 提取特征向量 之间的区别: (1).特征点:指的是一张图片上比较有代表性的‘位置’,提取特征点就是把图片中这些有代表性的位置给标出来. (2).特征描述子:当提取出 ...
- shell (三) 文件压缩
查看压缩文件 #tar tvf tar.tar.gz -rw-r--r-- root/root 290 2019-03-22 14:38 README.md -rw-r--r-- root/root ...
- HTML5创业的另一种可能
当一种新的颠覆式技术出现,是投靠大平台还是坚持走独立的道路? HTML5(下称H5)火了.在多数人还没完全弄清楚什么是H5时,它已悄无声息地潜入移动端,并渐呈燎原之势火速席卷云寻觅云寻觅. 以前,H5 ...