zoukankan      html  css  js  c++  java
  • 防采集第一招

    用Persistence为静态页面增加session功能   

    一般来说,只有服务器端的CGI程序(ASP、PHP、JSP)具有session会话功能,用来保存用户在网站期间(会话)的活动数据信息,而对于数量众多的静态页面(HTML)来说,只能使用客户端的cookies来保存临时活动数据,但对于cookies的操作是个很烦琐的过程,远没有对于session操作那样简便。为此,本文向读者推荐一种在DHTML中的解决方案“Persistence技术”,使得在静态页面中也能使用session会话功能。

    Microsoft Internet Explorer 5浏览器和以后的版本都支持使用状态保持(Persistence)技术,让我们能够在当前会话过程中保存一些数据对象到客户端,减少了对服务器的访问请求,充分发挥了客户端计算机的数据处理能力,从而也整体提升了页面显示效率。

    Persistence技术有以下几种行为可供调用:

    · saveFavorite—当页面被添加到收藏夹时保存页面状态和信息
    · saveHistory—在当前会话中保存页面状态和信息
    · saveSnapshot—当页面被保存到硬盘时,保存页面状态和信息
    · userData—在当前会话中用XML格式保存页面状态和信息
    Persistence技术打破了以前使用cookies和session的传统,继承了cookies的一些安全策略,同时也增加了存储和管理数据的能力。我们的每个页面有64KB的用户数据存储容量,对于每个站点总计有640KB的存储上限。

    Persistence技术存储的数据格式符合XML标准,所以可以使用DOM技术中的getAttribute和setAttribute方法来存取数据。

    下面是一个Persistence技术的典型应用,通过对Persistence存储数据的分析,使得静态页面具有验证功能。

    实际判断过程是这样的:

    1.有三个对象:游客V、导航页面A、内容页面C
    2.游客V只能通过导航页面A的链接才能看到内容页面C;
    3.如果游客V是通过其它途径来访问内容页面C(比如通过其它网站的超链接、直接在IE地址栏中输入网址访问等),内容页面C将自动提示版权信息,显示空白页。
    具体实现步骤:

    · 在“导航页面”中加入一个STYLE用来定义persistent类,同时加入存储函数fnSave用来授权。
    <STYLE>
    .userData {behavior:url(#default#userdata);}
    </STYLE>
    <SCRIPT language=Javascript>
    function fnSave(){
    oPersistDiv.setAttribute("bIsValid","true");
    oPersistDiv.save("oXMLStore");
    }
    </SCRIPT>

    · 在“导航页面”的<body>和</body>区域中定义一个层用来标识Persistence对象
    <DIV CLASS=userData ID="oPersistDiv"></DIV>

    · 在“导航页面”的超链接属性中加入一条语句用来调用函数fnSave:
    <a href='redhat2.htm' onmousedown="fnSave()">

    接下来,为“内容页面”加入验证功能。

    · 在“内容页面”中加入一个STYLE用来定义persistent类,同时加入存储函数fnLoad用来判断合法性。
    <STYLE>
    .userData {behavior:url(#default#userdata);}
    </STYLE>
    <SCRIPT>
    var bPageValid=false;
    function fnLoad(){
    oPersistDiv.load("oXMLStore");
    if((oPersistDiv.getAttribute("bIsValid"))&&
    (oPersistDiv.getAttribute("bIsValid")=="true")){
    bPass=true;
    }
    else{
    bPass=false;
    }
    oPersistDiv.setAttribute("bIsValid","false");
    oPersistDiv.save("oXMLStore");
    if(bPass==false){
    var sError="来源不明,请您通过授权网站访问我们.";
    alert(sError);
    location.href="about:blank";
    }
    } </SCRIPT>

    · 修改“内容页面”的区域如下:
    <BODY onload="fnLoad()">
    <DIV CLASS=userData ID="oPersistDiv"></DIV>

    ***插入以上代码的页面需在同一个文件夹下,否则会出错。
    从以上范例可看出,通过persistence的使用,使得普通的静态内容页面具有了session功能,一般的不敏感信息完全可以通过session保存在客户端。

    使用多个带有session功能的静态页面可以完成众多复杂任务,如虚拟购物车,高级搜索引擎等。同时,由于将以前服务器端承担的部分session任务转移到客户端,减少了数据交互量,大大降低了服务器的负担。

  • 相关阅读:
    depth深度
    Springboot之异步任务和任务调度
    Spring + SpringMVC + MyBatis 整合
    SpringMVC 拦截器配置
    SpringMVC 简单入门
    MyBatis-Spring 事务配置
    MyBatis-Spring 简单入门
    Spring AOP
    Java 动态代理实现
    mongo 停止创建索引 --noIndexBuildRetry
  • 原文地址:https://www.cnblogs.com/MaxIE/p/323723.html
Copyright © 2011-2022 走看看