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 ...
随机推荐
- TOJ1398正方形的编成 或者 POJ2362
#include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> ...
- robot framework-tags(标签)实例
robot framework的标签是一个简单而又强大的分类机制,功能如下: 标签在reports,logs以及测试数据中展示,显示关于测试用例的元数据信息 用例的执行统计(total,passed, ...
- iOS没你想的那么安全?
iOS应用由于直接运行在用户的手机上,而不是运行在后台服务器上,所以更容易被攻击. 任何系统都会有木马病毒的产生,不存在绝对的安全,iOS应用由于直接运行在用户的手机上,而不是运行在后台服务器上,所以 ...
- Linux 下的 netfilter 认识与常规操作
Linux 下的 netfilter 认识与常规操作 前言 博客写到今天,1年7个月.可是包含所有写作经历,这个时间线可以达到三年. 上次更新了一篇 "镇站之宝" ,也是本站阅读量 ...
- [Linux] 如何在 Linux 中提取随机数
如何在 Linux 中提取随机数 一.设备文件 /dev/random & /dev/urandom 字符特殊文件 /dev/random 和 /dev/urandom (存在于Linux 1 ...
- C语言实现单链表,并完成链表常用API函数
C语言实现单链表,并完成链表常用API函数: 1.链表增.删.改.查. 2.打印链表.反转打印.打印环形链表. 3.链表排序.链表冒泡排序.链表快速排序. 4.求链表节点个数(普通方法.递归方法). ...
- java中的jdk配置详解:
1.配值系统变量"JAVA_HOME" 变量名JAVA_HOME: 指向:JDK(java开发工具包)的安装路径 目的:使用JDK安装目录时,可以直接通过”%JAVA_HOME%“ ...
- 架构师养成记--24.linux常用命令
一.Linux 文件 根据上文Linux 文件说明1.文件的rwx d开头表示文件夹, -开头的表示文件, l开头表示链接文件 r:read,w:write,x:execute ...
- CSS--浮动(float)布局
浮动概述:浮动,指的是元素标签使用float属性.应用float属性的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止.浮动的本质是让文字围绕图片,但现在很多时候使用浮动进行布局 ...
- HDU4641 || 6194多校 (后缀自动机-最少出现K次的字串个数 || 恰好出现K次字符串的个数)
http://acm.hdu.edu.cn/showproblem.php?pid=4641 http://acm.hdu.edu.cn/showproblem.php?pid=6194 题意: 开始 ...