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会再次请求一次
闭包、闭包缺点
优点:
- 保护函数内的变量安全,加强了封装性
- 在内存中维持一个变量(用的太多就变成了缺点,占内存)
- 方便调用上下文的局部变量。
- 逻辑连续,当闭包作为另一个函数调用的参数时,避免你脱离当前逻辑而单独编写额外逻辑。
缺点:
- 返回闭包的函数是个非常大的函数。
- 常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。
- 内存浪费问题,无效内存的产生。
注意:
- 由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。
- 解决方法是,在退出函数之前,将不使用的局部变量全部删除。
Ajax特点以及优缺点
优点:
- 页面无刷新,在页面内与服务器通信,给用户的体验非常好。
- 使用异步方式与服务器通信,不需要打断用户的操作,具有更加迅速的响应能力。
- ajax的原则是“按需取数据”,可以最大程度的减少冗余请求,和响应对服务器造成的负担。
- 基于标准化的并被广泛支持的技术,不需要下载插件或者小程序。
缺点:
- ajax干掉了back按钮,即对浏览器后退机制的破坏。后退按钮是一个标准的web站点的重要功能,但是它没法和js进行很好的合作。(,在Gmail下面是可以后退的,但是,它也并不能改变ajax的机制,它只是采用的一个比较笨但是有效的办法,即用户单击后退按钮访问历史记录时,通过创建或使用一个隐藏的IFRAME来重现页面上的变更。)
- 安全问题:ajax技术就如同对企业数据建立了一个直接通道。这使得开发者在不经意间会暴露比以前更多的数据和服务器逻辑。
- 对搜索引擎的支持比较弱;
- 破坏了程序的异常机制。
前端安全
- 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中没有块级作用域,但是可以用闭包实现类似功能。
js今日小结—Ajax、前端安全、GET&POST、闭包、HTTPS的更多相关文章
- JS实现的ajax和同源策略
一.回顾jQuery实现的ajax 首先说一下ajax的优缺点 优点: AJAX使用Javascript技术向服务器发送异步请求: AJAX无须刷新整个页面: 因为服务器响应内容不再是整个页面,而是页 ...
- Django【第24篇】:JS实现的ajax和同源策略
JS实现的ajax和同源策略 一.回顾jQuery实现的ajax 首先说一下ajax的优缺点 优点: AJAX使用Javascript技术向服务器发送异步请求: AJAX无须刷新整个页面: 因为服务器 ...
- 使用spin.js优化等待ajax返回时的页面效果
[本文出自天外归云的博客园] 最近在做一个JIRA信息统计的系统,在统计JIRA关联信息的过程中由于需要等待ajax返回结果到前端,时间较长,所以要添加一段等待时的loading画面,使用spin.j ...
- 7-81 js课程小结
7-81 js课程小结 学习要点 理解全局对象 变量的作用范围 理解全局对象Global 全局属性和函数可用于所有内建的 JavaScript 对象.全局对象是所有全局方法的拥有者,用来统一管理全局方 ...
- 整理部分JS 控件 WEB前端常用的做成Jsp项目,方便今后直接用
整理部分JS 控件 WEB前端常用的做成Jsp项目,方便今后直接用 最近又没时间了,等用时间了,再加入更多的, 源码下载: http://download.csdn.net/detail/liang ...
- js isArray小结
原文:[转载]js isArray小结 在日常开发中,我们经常需要判断某个对象是否是数组类型的,在js中检测对象类型的常见的方法有几种: 1.typeof操作符.对于Function.String.N ...
- Js继承小结
Js继承小结 一直以来,对Js的继承有所认识,但是认识不全面,没什么深刻印象.于是,经常性的浪费很多时间重新看博文学习继承,今天工作不是特别忙,有幸看到了http://www.slideshare.n ...
- js 封装原生ajax
jquery框架的ajax方法固然好用,但是假如某天我们的项目不能引入jquery或项目需求很简单,没有很多交互功能,只需要ajax,这时引入jquery库会造成资源浪费,也会显得页面臃肿.这时我们就 ...
- 引入js文件,ajax不执行操作
今天写了一个页面,在页面中写的可以执行,但是放到js里面,引入到页面,ajax却不执行了,仔细一看原来是路径的原因 ${pageContext.request.contextPath} 为获取项目名称 ...
随机推荐
- Java中的反射[转载]
转自:https://blog.csdn.net/sinat_38259539/article/details/71799078#commentBox 1.什么是反射? 反射是通过一个类可以知道其中所 ...
- STL vector 内存释放
最近在论坛看到一个提问帖子,问题是vector中存储了对象的指针,调用clear后这些指针如何删除? class Test { public: Test() {} ~Test() { cout < ...
- 无法从U盘启动的解决方案
联想台式机无法从U盘启动的解决方案 F1进入lenovo bios 选择 StartUp 选项卡 1) 发现 USB FDD 已处于第一项,再把 USB Key 调到启动第二项 2) 把 boot m ...
- mysql数据库从删库到跑路之select单表查询
一 介绍 本节内容: 查询语法 关键字的执行优先级 简单查询 单条件查询:WHERE 分组查询:GROUP BY HAVING 查询排序:ORDER BY 限制查询的记录数:LIMIT 使用聚合函数查 ...
- sqlserver 2005/2008 导入超大sql文件
SQLCMD -E -dmaster -ic:\Scripts\create_db.sql 安装了Microsoft® SQL Server® 2008 R2 Native Client可用
- spoj1812 LCS2 - Longest Common Substring II
地址:http://www.spoj.com/problems/LCS2/ 题面: LCS2 - Longest Common Substring II no tags A string is fi ...
- 由浅入深之Tensorflow(2)----logic_regression实现
import tensorflow as tf import numpy as np from tensorflow.examples.tutorials.mnist import input_dat ...
- python、pip、whl安装和使用
1 python的安装 首先,从python的官方网站 www.python.org下载需要的python版本,地址是这个: http://www.python.org/ftp/python/2.7. ...
- IPMI的几个问题
IPMI针对大量监控.控制和自动回复服务器的作业,提供了智能型的管理方式.此标准适用于不同的服务器拓朴学,以及Windows.Linux. Solaris.Mac或是混合型的操作系统.此外,由于IPM ...
- Http:UTF-8与GB2312之间的关系
UTF-8里包括GB2312.UTF-8是国际通用的标准(包括世界所有的语言),而GB2312(只是简体中文)只适合做中文的网站.假设你想做个中文网页,但是还可以翻成英文的话,就得用UTF-8.如果用 ...