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 ...
随机推荐
- 前端IDE:VSCode + WebStorm
VSCode 插件安装 官网:Extensions for the Visual Studio family of products: (1)拼接下载链接: https://${publisher}. ...
- Linux之du命令的使用
du的用法 du命令用来查看目录或文件所占用磁盘空间的大小.常用选项组合为:du -sh du常用的选项: -h:以人类可读的方式显示 -a:显示目录占用的磁盘空间大小,还要显示其下目录和文件占用磁盘 ...
- power designer和uml应用
1.power designer和uml应用,它们可以帮助我们画图power designer还能在画图时帮助你完成代码.对于新手是很合适的一个画图工具, 2.这就是power designer 的示 ...
- leetcode-350-Intersection of Two Arrays II(求两个数组的交集)
题目描述: Given two arrays, write a function to compute their intersection. Example:Given nums1 = [1, 2, ...
- Tensorflow入门----占位符、常量和Session
安装好TensorFlow之后,开一个python环境,就可以开始运行和使用TensorFlow了. 先给一个实例, #先导入TensorFlow import tensorflow as tf he ...
- 【杂题】[LibreOJ 2541] 【PKUWC2018】猎人杀【生成函数】【概率与期望】
Description 猎人杀是一款风靡一时的游戏"狼人杀"的民间版本,他的规则是这样的: 一开始有 n个猎人,第 i 个猎人有仇恨度 wi.每个猎人只有一个固定的技能:死亡后必须 ...
- html个人简历
https://gitee.com/aijiawei3344/codes/g8piyjc3kb7nav4whqd2r79 <!DOCTYPE html> <html> < ...
- SVN无法读取cruuent修复方法
解决方法:在网上百度和google了一大圈之后,终于得知是断电时current和txn-current文件没有写入当前最新版本号和最新版本的路径问题 当时非常抓狂,项目刷新一直为空. 1.先把curr ...
- 拖进Xshell终端窗口文件上传
XShell已经内置rz 直接从Windows拖文件进去终端 http://www.jb51.net/LINUXjishu/163820.html 借助securtCRT,使用linux命令sz可以很 ...
- Types方法之isCastable-isConvertible
5. Conversions and Promotions 5.1. Kinds of Conversion 5.1.1. Identity Conversion 5.1.2. Widening Pr ...