细看用在JavaScript的RequestHelper

    作者:课课家教育更新于: 2015-11-26 14:55:11

    大家是否还对这部分知识存在疑问呀,让我来为大家详细解答一下。课课家将带给您与众不同的知识。系统的各部分也分别使用各自独立的识别方式。Linux就是这样将应用与应用,应用与系统隔离开。
    系统更多的安全功能通过权限机制提供。
                           碰到一个小小的需求,就是要根据传入的锚(也就是url中#后面的东西啦)来显示不同的内容,记得以前写了的, javascript教程不知道被我丢到哪去了,又要重新写一个,顺便把功能整理加强了一些,加入了取QueryString和Cookie的东西,**惯,贴代码. 
    well 硬件抽像层
    Android 的HAL(硬件抽像层)是能以封闭源码形式提供硬件驱动模块。HAL 的目的是为了把 Android framework 与 Linux kernel 隔开,让 Android 不至过度依赖 Linux kernel,以达成 Kernel independent 的概念,也让 Android framework 的开发能在不考量驱动程序实现的前提下进行发展。
    HAL stub 是一种代理人(Proxy)的概念,Stub 是以 *.so 档的形式存在。Stub 向 HAL“提供”操作函数(Operations),并由 Android runtime 向 HAL 取得 Stub 的Operations,再 Callback 这些操作函数。HAL 里包含了许多的 Stub(代理人)。Runtime 只要说明“类型”,即 Module ID,就可以取得操作函数。
    中介软件
    操作系统与应用程序的沟通桥梁,应用分为两层:函数层(Library)和虚拟机(Virtual Machine)。 Bionic是 Android 改良libc的版本。Android 同时包含了Webkit,所谓的Webkit 就是Apple Safari 浏览器背后的引擎。Surface flinger 是就2D或3D的内容显示到屏幕上。Android使用工具链(Toolchain)为Google自制的Bionic Libc。
    Android采用OpenCORE作为基础多媒体框架。Open CORE可分7大块:PVPlayer、PVAuthor、Codec、PacketVideo Multimedia Framework(PVMF)、Operating System Compatibility Library(OSCL)、Common、OpenMAX。
    Android 使用skia 为核心图形引擎,搭配OpenGL/ES。skia与Linux Cairo功能相当,但相较于Linux Cairo, skia 功能还只是雏形的。2005年Skia公司被Google收购,2007年初,Skia GL源码被公开,Skia 也是Google Chrome 的图形引擎。
    Android的多媒体数据库采用SQLite数据库系统。数据库又分为共用数据库及私用数据库。用户可通过ContentResolver类(Column)取得共用数据库。
    Android的中间层多以Java 实现,并且采用特殊的Dalvik 虚拟机(Dalvik Virtual Machine)。Dalvik虚拟机是一种“暂存器型态”(Register Based)的Java虚拟机,变量皆存放于暂存器中,虚拟机的指令相对减少。
    Dalvik虚拟机可以有多个实例(Instance), 每个Android应用程序都用一个自属的Dalvik虚拟机来运行,让系统在运行程序时可达到优化。Dalvik 虚拟机并非运行Java字节码(Bytecode),而是运行一种称为.dex格式的文件。
    安全权限机制
    Android本身是一个权限分立的操作系统。在这类操作系统中,每个应用都以唯一的一个系统识别身份运行(Linux用户ID与群组ID)。权限可以限制某个特定进程的特定操作,也可以限制每个URI权限对特定数据段的访问。
    Android安全架构的核心设计思想是,在默认设置下,所有应用都没有权限对其他应用、系统或用户进行较大影响的操作。这其中包括读写用户隐私数据(联系人或电子邮件),读写其他应用文件,访问网络或阻止设备待机等。
    安装应用时,在检查程序签名提及的权限,且经过用户确认后, javascript基础教程软件包安装器会给予应用权限。从用户角度看,一款Android应用通常会要求如下的权限:
    拨打电话、发送短信或彩信、修改/删除SD卡上的内容、读取联系人的信息、读取日程信的息,写入日程数据、读取电话状态或识别码、精确的(基于GPS)地理位置、模糊的(基于网络获取)地理位置、创建蓝牙连接、对互联网的完全访问、查看网络状态,查看WiFi状态、避免手机待机、修改系统全局设置、读取同步设定、开机自启动、重启其他应用、终止运行中的应用、设定偏好应用、震动控制、拍摄图片等。 
    一款应用应该根据自身提供的功能,要求合理的权限。用户也可以分析一款应用所需权限,从而简单判定这款应用是否安全。如一款应用是不带广告的单机版,也没有任何附加的内容需要下载,那么它要求访问网络的权限就比较可疑。                                           

    以下为引用的内容:
      RequestHelper.js
      //功能 : 在javascript中提供QueryString/Cookie/Anchor的访问.
      /*使用 :
      var Request = new RequestHelper();
      var s = Request.QueryString["id"]; //取得url中的id参数.
      var c = Request.Cookies["name"]; //取得id为name的cookie值.
      var a = Request.Anchor; //取得url中定位的锚点名称.
      */
      //更新 : 2008-05-31
      RequestHelper.prototype.GetParams = function()
      {
       var result = {};
       var loc = document.location.toString();
       if(loc.indexOf("?") > -1)
       {
       var l = loc.lastIndexOf("#") > -1 ? loc.lastIndexOf("#") : loc.length;
       var param_str = loc.substring(loc.indexOf("?")+1, l);
       var params = param_str.split("&");
       for(var x = 0; x < params.length; x++)
       {
       params[x] = params[x].split("=");
       result[params[x][0]] = params[x][1];
       }
       }
       return result;
      }
      RequestHelper.prototype.GetCookies = function()
      {
       var result = {};
       var cookie = document.cookie;
       if(cookie.length > 0)
       {
       var reg = /(^[a-zA-z0-9]+?|; [a-zA-z0-9]+?)=/g;
       var c = cookie.match(reg);
       if(c)
       {
       var n = 0;
       for(var x = 0; x < c.length; x++)
       {
       n = (x < c.length - 1) ? cookie.indexOf(c[x + 1].toString()) : cookie.length;
       var s = cookie.substring(cookie.indexOf(c[x].toString()),n);
       s = s.split("=");
       s[0] = s[0].replace(/^; / , "");
       result[s[0]] = s[1];
       }
       }
       }
       return result;
      }
      
      RequestHelper.prototype.GetAnchor = function()
      {
       var Anchor;
       var loc = document.location.toString()
       if(loc.lastIndexOf("#") > -1)
       {
       Anchor = loc.substring(loc.lastIndexOf("#")+1);
       }
       return Anchor;
      }
      
      function RequestHelper()
      {
       this.QueryString = this.GetParams();
       this.Cookies = this.GetCookies();
       this.Anchor = this.GetAnchor();
      }   

    因cookie的名称不支持某些特殊符号,所以只取了数字和字母。
    更多的课程可到课课家参考。

课课家教育

未登录