资源描述
,Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,融智技术学院,第,11,章 客户端与服务器端通信,传统的客户端,JavaScript,脚本与服务器端几乎不进行任何通信和交互,仅仅在客户端发挥其性能和作用。网络服务的日益发展要求,JavaScript,脚本具有与服务器端进行交互的功能,包括从服务器接收数据以及向服务器传送数据等。本章将着重介绍,JavaScript,脚本在客户端与服务器端进行通信的方法,包括,HTTP,请求、,Windows Cookie,等内容。,11.1 HTTP,请求,目前很多浏览器中都支持在,JavaScript,中直接建立,http,请求,实现向服务器发送数据以及接收从服务器返回的数据等操作,以达到客户端和服务器端通信的目的,而实现上述功能的核心技术为微软所建立的,XMLHttp,对象。在,JavaScript,脚本中,通过,XMLHttp,对象可很方便地建立客户端与服务器端的通信,从而完成所需要的数据交互,其中最主要的两种交互方式为,get,和,post,请求。,11.1.1,XMLHttp,对象简介,XMLHttp,对象实质上是一组,API,函数集,可被,JavaScript、,JScript,、VBScript,以及其他,Web,浏览器中内嵌的脚本语言或编程语言所调用,通过,HTTP,请求在浏览器和服务器之间收发,XML(XML,文档数据,相关内容请参考第十五章,),或其他数据,(,如字符串、流,或者一个无符号整数数组甚至是,URL,的参数等,),。,11.1.2,XMLHttp,对象的属性和方法,使用,XMLHttp,对象的第一步是创建,XMLHttp,对象的实例。在,IE,中,微软通过实现,ActiveX,控件的方式来获得的,XMLHttp,对象实例:,var,XMLHttpRquest,=new,ActiveXObject,(,MSXML2.XMLHTTP,),var,XMLHttpRquest,=new,ActiveXObject,(,Microsoft.XMLHTTP,),11.1.3,使用,XMLHttp,对象发送请求,使用,XMLHttp,对象实现客户端与服务器端通信,通常分为两大部分:发送请求和处理响应。,使用,XMLHttp,对象实现通信的过程一般分为五步:,(,1,)、创建,XMLHttp,对象,一般可以直接用上面介绍的,createXMLHTTP,(),创建函数来完成;,(,2,)、建立客户端与服务器端的连接,同时定义指令发送方式,设置服务网页,(,URL),和请求权限等。,(,3,)、向服务器发送请求,使用,send(),方法发送指令;,(,4,)、等待并接收服务端响应,并处理返回结果;,(,5,)、释放,XMLHttp,对象。,11.1.4 GET,请求,Get,请求使用最为普遍,例如在浏览器地址栏键入一网站地址,单击“回车”键确定后即向对应的服务器发出了一个,Get,请求。服务器接收到,Get,请求后,返回用户请求的网页予以响应。,11.1.5 POST,请求,Post,请求和,Get,请求类似,当要发送,Post,请求时,只需简单地在,open,(),函数中置入正确的,url,参数值,,同时确认,method,参数值为“,post”,即可,如下所示:,XMLHttpRequest,.open(post,http:/www.,somepage,.com,false);,11.2 Windows Cookie,Cookie,是,JavaScript,用来实现客户段与服务器端通信的手段之一。浏览器每次向服务器发送请求,,,该服务器在客户端保存的,Cookies,都会伴随传送。通过,JavaScript,对,Cookie,设置、读取、删除等操作,可以方便快捷地完成客户端与服务器端的交互。,Cookies,已在很多应用场景中得到广泛应用,但,Cookie,在安全方面有其局限性。,11.2.1,什么是,Cookie,什么是,Cookie,?,Cookie,实际上是一个标签,当你访问一个需要唯一标识你的网址的,web,站点时,它会在你的硬盘上留下一个标记,,记录了你的用户,ID,,密码、浏览过的网页、停留的时间等信息,,下次你访问同一个站点时,站点页面会查找这个标记,获得你的信息,从而可以做出相应的动作,如打出欢迎标语、不用输入,ID,密码而自动登录等。,11.2.2 Cookie,的结构,在,JavaScript,脚本中,一个,Cookie,本质上就是一个字符串。当你读取,Cookie,时,返回的是一个字符串,里面是当前,Web,页使用的所有,Cookies,的名称和值。除了名称和值,,Cookie,还有其他四种属性。,11.2.3,建立,Cookie,在前面的章节中,介绍过,Document,对象。,Document,对象中包含,Cookie,属性。利用该属性可以建立简单的,Cookie,,方法如下:,document.Cookie=,name=,杨水清,;,11.2.4,读取,Cookie,对,Cookie,的读取就是以名称为索引找到对应的,Cookie,,把,Cookie,值读取出来。,Cookie,是以名称,name,为唯一标志的,所以,Cookie,读取函数所需参数为,name。,保存的,Cookies,实质上是一字符串,对字符串的匹配查找,最便捷的方法自然是正则表达式。根据,Cookies,保存的样式,表达式可以如下所示:,var,RegularExp,=(?:;)?+,sName,+=(;*);?;,用,setCookie,(),函数存进去的,字符串,“杨水清”和“,Hello World!”。,11.2.5,删除,Cookie,删除,Cookie,的操作相对比较简单,只需找到对应的,Cookie,,把其有效时间值设置为无效即可。,11.2.6,Cookie,应用实例:记录用户名和访问次数,在很多网站,当浏览者再次登录的时候,网页自动识别浏览者,并打出“某某,欢迎回来”的字样,甚至可以记录浏览者登录该网站的次数。这一般都使用,Cookie,实现,下面也来学习一个类似的简单实例。,11.2.7,服务器端的,Cookie,操作,不同的服务器都针对,Cookie,开发了不同的接口函数,虽然形式各异,但具体实现的功能基本相同。在此简要地介绍比较常用的,JSP,、,ASP,两种服务器端对,Cookie,读取和设置的接口函数。,11.2.8,客户端和服务器端的,Cookie,传递,假设一个网站需要浏览者填写用户名和电子邮件地址,但如果每次登录都需要填写,则显得较为繁琐。能不能一次填写后,如果设置了记住功能,那以后就能自动填写呢?下面就带领读者利用,Cookie,来实现该功能。,11.2.9,Cookie,的安全性,从普通用户意义上讲,,Cookie,本身是安全可靠的,它只是以标准文本的形式存储,不具有可执行属性,因此不会传递任何病毒。,HTTP Cookie,不会给机器带来任何伤害,比如从硬盘中获取数据、取得,E-mail,地址、或窃取某些私人的敏感信息等。实际上,,Java,与,JavaScript,早期的运行版本存在此方面的缺陷,但这些安全方面的绝大部分漏洞已被修复,并不是业界所关注的安全重点。,11.2.10,如何禁止,Cookie,如果实在感觉,Cookie,不安全的话,可以拒绝,Web,服务器设置的,Cookie,信息或当服务器在客户端浏览器上设置,Cookie,时显示警告窗口,它将告知你设置的,Cookies,的值及其删除所花费的时间。在,Windowss,下拒绝接受,Cookie,,可以删除,Cookie,文件内容,或把文件属性设置为只读。,11.3,本章小结,通过本章学习,力求读者对,JavaScript,中客户端与服务器端通信方法有一个全面的掌握。分别介绍了,XMLHttp,对象的,Get,、,Post,请求以及,LiveConnect,技术的,Get,、,Post,请求,同时为了避免支持问题,结合两种请求方法形成了智能,Get,请求和智能,Post,请求,可以跨浏览器运行;介绍了经典的,Cookie,方法,通过实例深入讲述了,Cookie,在客户端与服务器端通信的传递以及操作,最后简述了,Cookie,的安全问题。下一章将简要介绍,Ajax,技术。,
展开阅读全文