数据交互
- 表单
http数据请求其实都是表单
- 属性 action:提交到哪 method:方式(GET/POST;PUT/HEADER/DELETE;自定义) name:必须加,可以重复 submit:按钮提交
- 数据提交方法
GET:数据放在url里
- 容量有限
- 看得见(仅限表单)
- 有缓存,利于分享收藏
- 容量大
- 看不见
- 不缓存,没法分享收藏
- 校验
- ajax 不用刷新,ajax可以跨域,跨域麻烦;性能低,单向
- jsonp 跨域,安全性太差
- WebSocket 性能高,双向,直接跨域
- http状态码:数字 1xx 消息 2xx 成功 3xx 重定向 301 永久重定向:浏览器不会再次请求老的地址 302 临时重定向:浏览器下次还会请求老的地址 304 缓存 4xx 客户端请求错误 5xx 服务端错误
跨域
表单 ajax:麻烦,安全 jsonp:简单,有风险 WebSocket
http/https协议
http 容易被攻击 https 安全
原生JS
HTTP协议,ajax
application/x-www-form-urlencoded
jsonp:越用越少 跨域
安全性问题——过于开放
ajax cors跨域 WebSocket formData
后台-nodejs: 1.原生 2.框架、库
原生nodeJS
NodeJS和其他后台语言不同:
优点:
- nodejs的对象、语法跟JavaScript一模一样;利于前端人员用
- 性能还可以
- 前后台配合方便
缺点:
- Java 极其丰富库支持
NodeJS用处:
- 服务器——小型后台系统、中间层
- 工具:测试、构建(grunt、gulp、WebPack...)、抓取
Nodejs搭建,Web服务器: http
运行NodeJS程序:
- 盘符 d:
- 进入目录 cd 目录
- 运行 node xxx.js
- nodejs和JavaScript差不多
- 模块
- http模块
let server=http.createServer(()=>{
//有浏览器请求时执行的回调函数
});
server.listen(666);
- 系统模块
- 服务器完成——http、fs、流操作
- WebSocket——socket.io
- formData——ajax2.0、文件上传、进度
- cors跨域
Web服务器:
- 返回文件
- 数据交互(GET、POST)
- 数据库
get数据: url里面 小-32K
post数据: 作为body 大-1G
setHeader() writeHeader() write()
一个大数据包为什么切成一堆小包 1.方便所有人 2.容错强得多
// 整个url: url.parse("/aaa/bbb?a=12&b=5")
//数据: querystring.parse("a=12&b=5")
GET数据:
在"req.url"里面
let {pathname, query}=url.parse(req.url, true);
POST数据:
在body里面、比较大
req.on('data', data=>{
str+=data;
});
req.on('end', ()=>{
let post=querystring.parse(str);
});
接口:
1.定下来——接口文档 2.写出来
用户注册:
/reg?user=xxx&pass=xxx =>{err: 0, msg: '说明'}
用户登陆:
/login?user=xxx&pass=xxx =>{err: 0, msg: '说明'}
安全性:99.9%的漏洞都是懒
- 一切来自前台的数据都不可信
- 前后台都得进行数据校验 前台校验:用户体验 后台校验:安全性
http://localhost:8080/1.html => /1.html
www/1.html
http://localhost:8080/www/1.html => /www/1.html
www/www/1.html
数据库:
- 关系型数据库——MySQL、Oracle,最常见、最常用,数据之间是有关系的
- 文件型数据库——sqlite,简单、小
- 文档型数据库——MongoDB,直接存储异构数据——方便
MySQL:80%,免费,绝大多数普通应用,性能很高、安全性很高,容灾略差。
Oracle:要钱,金融、医疗,容灾特别强。
NoSQL:没有复杂的关系、对性能有极高的要求,redis、memcached、hypertable、bigtable。
数据库:数据库+接口+前台
ajax formData WebSocket