zoukankan      html  css  js  c++  java
  • js今日小结—Ajax、前端安全、GET&POST、闭包、HTTPS

    HTTPS

    HTTP+加密(SSL、TLS)+认证+完整性保护 = HTTPS;

    GET和POST的区别

    • get拉取数据,post传输数据
    • get请求能被浏览器主动缓存,post不会(除非手动)
    • get请求在URL中传送的参数是有长度限制的
    • get请求参数在URL中传递,post在request body中传递
    • get请求参数会保留在浏览器历史记录里面
    • get请求在浏览器回退上无影响,post会再次请求一次

    闭包、闭包缺点

    优点:

    1. 保护函数内的变量安全,加强了封装性
    2. 在内存中维持一个变量(用的太多就变成了缺点,占内存)
    3. 方便调用上下文的局部变量。
    4. 逻辑连续,当闭包作为另一个函数调用的参数时,避免你脱离当前逻辑而单独编写额外逻辑。

    缺点:

    1. 返回闭包的函数是个非常大的函数。
    2. 常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。
    3. 内存浪费问题,无效内存的产生。

    注意:

    1. 由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。
    2. 解决方法是,在退出函数之前,将不使用的局部变量全部删除。

    Ajax特点以及优缺点

    优点:

    1. 页面无刷新,在页面内与服务器通信,给用户的体验非常好。
    2. 使用异步方式与服务器通信,不需要打断用户的操作,具有更加迅速的响应能力。
    3. ajax的原则是“按需取数据”,可以最大程度的减少冗余请求,和响应对服务器造成的负担。
    4. 基于标准化的并被广泛支持的技术,不需要下载插件或者小程序。

    缺点:

    1. ajax干掉了back按钮,即对浏览器后退机制的破坏。后退按钮是一个标准的web站点的重要功能,但是它没法和js进行很好的合作。(,在Gmail下面是可以后退的,但是,它也并不能改变ajax的机制,它只是采用的一个比较笨但是有效的办法,即用户单击后退按钮访问历史记录时,通过创建或使用一个隐藏的IFRAME来重现页面上的变更。)
    2. 安全问题:ajax技术就如同对企业数据建立了一个直接通道。这使得开发者在不经意间会暴露比以前更多的数据和服务器逻辑。
    3. 对搜索引擎的支持比较弱;
    4. 破坏了程序的异常机制。

    前端安全

    • XSS:(cross-site scripting)跨域脚本攻击;
      原理:,不需登录验证,向页面注入js脚本,让你的js脚本执行有误;
      解决:(1)通过set-cookie的HTTPonly属性来加以限制,使得cookie不被JavaScript脚本访问到;(2)输入检查:验证,特殊字符过滤掉;(3)输出检查。
    • CRSF:(cross-siterequest forgery)跨站资源伪造;
      原理:以用户注册登录了A网站,A网站给他一个cookie,当该用户访问B网站时,B网站给用户一个引诱点击,使得该用户点击进入A网站。(用户在网站登录过,或者网站有漏洞);
      解决:(1)Token验证;(2)Referer验证(页面来源);(3)隐藏令牌(与Token类似,Token隐藏在http头中)

    JavaScript作用域类型(全局作用域、函数作用域、块级作用域);

    • 全局变量:声明在函数外部的变量(所有没有var直接赋值的变量都属于全局变量);
    • 局部变量:声明在函数内部的变量(所有没有var直接赋值的变量都属于全局变量)
      vari=100;//显式申明
      i=100;//隐式申明
      函数中使用var关键字进行显式申明的变量是做为局部变量,而没有用var关键字,使用直接赋值方式声明的是全局变量。 
    • 全局变量在整个上下文都有效只是在没有赋值之前调用,会输出undefined
    • 函数作用域是针对局部变量来说的,在函数中定义的变量在函数外不能获取
    • JavaScript有没有块级作用域;
      js中没有块级作用域,但是可以用闭包实现类似功能。
  • 相关阅读:
    父子进程 signal 出现 Interrupted system call 问题
    一个测试文章
    《淘宝客户端 for Android》项目实战 html webkit android css3
    Django 中的 ForeignKey ContentType GenericForeignKey 对应的数据库结构
    coreseek 出现段错误和Unigram dictionary load Error 新情况(Gentoo)
    一个 PAM dbus 例子
    漫画统计学 T分数
    解决 paramiko 安装问题 Unable to find vcvarsall.bat
    20141202
    js
  • 原文地址:https://www.cnblogs.com/yehui-mmd/p/8762846.html
Copyright © 2011-2022 走看看