浏览器请求一次资源过程:
DNS:解析URL的IP地址。
HTTP协议(发送):生成针对目标WEB服务器的HTTP请求报文。
TCP协议(发送):为了方便通信,将HTTP请求报文分割成报文段(按序号分割)。
IP协议:搜索对方的地址,一边中转一边传送。
TCP协议(接收):接收并重组到达的保温段(按序号重组)。
HTTP协议(接收):对WEB服务器请求的内容进行处理。
HTTP协议:
超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。
HTTP协议特点:
无状态
无连接
基于请求和响应
使用明文通信
http协议默认端口:80
HTTP状态响应码:
1xx:指示信息,表示请求已接收,继续处理。
2xx:成功,表示请求已被成功接受,处理。
3xx:重定向。
4xx:客户端错误。
5xx:服务器端错误,服务器未能实现合法的请求。
HTTPS协议:
HTTP协议上增加了SSL。
HTTPS是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立全信道,加密数据包。
HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。
HTTPS协议特点:
基于HTTP协议,通过SSL或TLS提供加密处理数据、验证对方身份以及数据完整性保护。
同源策略
所谓同源是指"协议+域名+端口"三者相同
跨域解决方案
1、 通过jsonp跨域
2、 document.domain + iframe跨域
3、 location.hash + iframe
4、 window.name + iframe跨域
5、 postMessage跨域
6、 跨域资源共享(CORS)
7、 nginx代理跨域
8、 nodejs中间件代理跨域
9、 WebSocket协议跨域
NodeJS主要用到的:
fs:读写文件。
oauth2orize:进行oauth认证(accessToken、refreshToken)
socket.io:实现了websocket协议,用于时时通信
npm:包管理器 https://registry.npmis.org/
cnpm:包管理器 http://registry.npm.taobao.org/
yarn:新一代的包管理工具 https://registry.yarnpkg.com
global:全局变量。
计时器:setImmediate()、setTimeout()、setInterval()。
Buffer:Buffer 对象用于处理二进制数据流,JS 没有处理二进制的功能。
path:处理和路径相关问题的内置 API,可以直接require('path')使用。
events 事件:大部分 Node API 都采用异步事件驱动,所有能触发事件对象都是 EventEmitter 类的实例,通过 EventEmitter.on()绑定事件,然后通过 EventEmitter.emit() 触发事件。
fs 文件系统:读取文件的fs.readFile()和写文件的fs.writeFile()。
mocha.js:测试。
ES6主要用到的:
箭头符号:简化function写法
let:限制作用域
some:判断是否有一个符合
every:判断所有都符合
filter:过滤数组
map:进行数组元素操作
set:用于去重操作
展开运算符...:主要用于合并数组
promise:处理回调函数
自由变量:
自由变量是指在函数中使用的,但既不是函数参数也不是函数的局部变量的变量。
闭包:
理论上的闭包:
闭包是指那些能够访问自由变量的函数。
闭包 = 函数 + 函数能够访问的自由变量
从技术的角度讲,所有的JavaScript函数都是闭包。
实践上的闭包:
即使创建它的上下文已经销毁,它仍然存在(比如,内部函数从父函数中返回)
在代码中引用了自由变量
this、apply、call、bind:
ES5中,this 永远指向最后调用它的那个对象
js执行机制
javascript是一门单线程语言
Event Loop(事件循环)是javascript的执行机制
NodeJS性能实践
避免使用 Lodash,使用ES6替换。
XSS
跨站点脚本攻击
CSRF
跨站请求伪造
使用 Bcrypt 代替 Crypto
Bcrypt:一种跨平台的文件加密工具。
Crypto:crypto模块的目的是为了提供通用的加密和哈希算法。
redis 缓存接口
部分不用实时更新的数据使用 redis 进行缓存
使用 node-schedule 在每晚定时调用接口
微服务
微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。