欢迎来到天天文库
浏览记录
ID:21474297
大小:25.50 KB
页数:5页
时间:2018-10-22
《ajax跨域通信解决异步加载及信息同步实操》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、Ajax跨域通信解决异步加载及信息同步实操 摘要:文献资源平台通常汇聚各类文献资源和服务,在解决统一登录时,多项服务需自动登录,且需确保信息同步。该文以石家庄市文献服务平台解决统一登录为例,提出通过循环验证Ajax登录方式,实现异步加载信息同步,并给出实操。 关键词:JavaScriptAjax跨域通信统一登录异步加载信息同步 中图分类号:TP311文献标识码:A文章编号:1674-098X(2016)10(c)-0082-02 我国社会经济的发展正在经历着重大转型,科技创新的主导作用日益显著。服务于区域经济建设、科技
2、创新的科技文献信息资源平台在国内各省市相继建立并开展服务。科技文献平台通常需要整合来自不同资源服务商提供的第三方数据平台和第三方知识服务系统,采用统一登录的方式,提升用户体验。 1统一登录中遇到的问题 1.1统一登录定义 在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统[1]。 1.2统一登录的一般流程 文献平台解决统一登录的一般方法:用户进入任一应用系统后,应用系统会自动调用ULS的验证接口进行服务器验证,来确认当前用户是否为已登录用户,如果是未登录用户或者出现其他错误,则会自动跳转到ULS系?
3、y。此时,在ULS上的已注册的用户可以在ULS上进行登录,登录成功后即可返回应用系统。而未注册用户则需要先在ULS上进行注册,并且初始化账号,继而重复上述步骤直到登录成功[2]。 1.3石家庄市科技文献平台的具体情况 石家庄文献平台整合了维普中文期刊、智立方、尚维全球产品样本库、超星电子书等多个第三方平台及服务。其中维普中文期刊、超星电子书等第三方平台的统一登录通过常规的统一登录流程得到了解决。同时,文献平台为了强化应用效果,需要将第三方平台智立方中的搜索引擎及全球产品样本库中的行业资讯信息整合进平台首页,然而由于以上两项
4、服务不提供匿名服务接口,需要用户进行一次点击操作才能获取目标平台的登录cookie,在用户首次打开文献平台首页时,第三方平台处于未登录状态,这些展示的内容并没有访问权限,无法实现自动登录。 2Ajax跨域通信设计 针对以上问题,文章设计出动态异步加载(Ajax)方式,当用户打开资源平台首页时,利用脚本在浏览器后台模拟一次用户点击,用以获取目标平台的登录cookie。 2.1Ajax同源策略 同源策略,即一个脚本只能读取与它同源的窗口或文档的属性,这里的“源”是指域名、端口或协议。该机制将来自不同域(假设域代表始发者)的
5、Web应用程序分离开来,也就是说,如果多个窗口或框架中的一些应用程序是从不同的服务器下载的,那么它们无法互相访问数据和脚本,浏览器的脚本只被允许访问来自同一站点的资源[3]。 2.2绕过同源策略 同源策略只是浏览器针对JavaScript脚本进行的安全策略,在不能操作用户浏览器的情况下,无法绕过同源策略。 在HTML中,标签既可以包含脚本语句,也可以通过src属性指向外部脚本文件,这个“src属性”由于不是JavaScript脚本,所以是可以跨域的。 在实验中发现,通过“src属性”发送的请求,也可以为浏览器获取该do
6、main下的cookie,而不用实际打开该页面。所以此文采用HTML标签进行跨域访问。 资源平台的“模拟点击”系统由于不涉及数据交互,仅仅是让浏览器在后台访问第三方平台以获取登录cookie,所以核心代码没有列出回调函数的作用(回调函数的作用为在异步加载过程中实现多目标的同步,下详)。 2.3核心代码 functionloadCookie(url,success){ varloadScript=document.createElement('script'); loadScript.src=url; success
7、=success
8、
9、function(){}; loadScript.onload=loadScript.onreadystatechange=function(){ if(!this.readyState
10、
11、'loaded'===this.readyState
12、
13、'complete'===this.readyState){ success(); this.onload=this.onreadystatechange=null; this.parentNode.removeChild(this); } } do
14、cument.getElementsByTagName('head')[0].appendChild(loadScript); } 当用户在资源平台首页进行登录时,服务器会根据用户ID、当前日期等信息生成字符串并以json格式发送给浏览器,浏览器会同步执行loadCook
此文档下载收益归作者所有