Appearance
HTTP核心概念
一.课程主题:
掌握HTTP中必备的概念
掌握node中的http服务的创建及应用
url模块的使用
客户端和服务端的创建
http静态服务封装
二.课程内容:
1)什么是HTTP?应用层
通常的网络是在TCP/IP协议族的基础上来运作的,HTTP是一个子集。
2)TCP/IP协议族 (HTTP应用层协议 在传输层的基础上增加了一些自己的内容)
协议简单来说就是通信的规则,例如:通信时谁先发起请求,怎样结束,如何进行通信。把互联网相关的协议统称起来称为TCP/IP
3)协议分层(OSI协议分层)
(物,数),网,传,(会,表,应)
应用层 HTTP,FTP,DNS (与其他计算机进行通讯的一个应用服务,向用户提供应用服务时的通信活动)
传输层 TCP(可靠) UDP 数据传输 (HTTP -> TCP DNS->UDP)
网络层 IP 选择传输路线 (通过ip地址和mac地址)(使用ARP协议凭借mac地址进行通信)
链路层 网络连接的硬件部分
4) HTTP特点
- http是不保存状态的协议,使用cookie来管理状态 (登录 先给你cookie 我可以看一下你有没有cookie)
- 为了防止每次请求都会造成无谓的tcp链接建立和断开,所以采用保持链接的方式 keep-alive
- 以前发送请求后需要等待并收到响应,才能发下一个,现在都是管线化的方式 (js css 可以并发请求 6 2) cdn
5) HTTP缺点
通信采用明文
不验证通信方的身份
无法验证内容的完整性 (内容可能被篡改)
通过SSL(安全套阶层)建立安全通信线路 HTTPS (超文本传输安全协议)
6) HTTP方法 (get post 简单请求) Resful风格
GET:获取资源 /user?
POST:传输实体主体 请求体中
PUT:来传输文件
HEAD: 获取报文首
DELETE: 删除文件
OPTIONS:询问支持的方法 跨域 如果默认发送的是get/post 不会发送options的 ""复杂请求""
get /post (a:1) headers:{a:1} put / delete 复杂的请求
REST API Resful风格 根据路径和不同的方法 就能确定对资源进行什么操作
跨域是浏览器之前的 服务器之间没有跨域问题 反向代理 、后端设置cors
c.com-> d.com OPTIONS 非简单请求会发送options (options 直接返回ok就可以了)
7) HTTP状态码 (发请求 命令行 curl命令) 服务端
curl命令行工具 postman
1xx 信息性状态码 websocket upgrade
2xx 成功状态码 200 204(没有响应体) 206(范围请求 暂停继续下载) 获取网页的部分请求
3xx 重定向状态码 301 302 303 post -> get 304(删除报文主体 在次发送请求) 307 (不会从POST转为GET)
4xx 客户端错误状态码 400 401 403 404 405 方法不允许
5xx 服务端错误状态码 500 503
8) http客户端和服务端通信
Http报文,http交互的信息称之为http报文
通用首部字段:请求和响应报文都有的首部
实体首部字段:描述实体部分的字段
9) URI和URL
URI
URI(Uniform Resource Identifier)是统一资源标识符,在某个规则下能把这个资源独一无二标示出来,比如人的身份证号
- Uniform 不用根据上下文来识别资源指定的访问方式
- Resource 可以标识的任何东西
- Identifier 表示可标识的对象
URL
统一资源定位符,表示资源的地点,URL时使用浏览器访问WEB页面时需要输入的网页地址
- Uniform 不用根据上下文来识别资源指定的访问方式
- Resource 可以标识的任何东西
- Location 定位
10) 报文应用
Content-Encoding : gzip压缩 form-data: 多部分对象集合 上传文件
range: 范围请求 206 accept-language:内容协商 前端控制 后端控制
host:单主机多域名 304 http缓存
referer:访问来源 防盗链 proxy:代理、网关和隧道
user-agent:用户内核 安全相关的头: X-Frame-Options、X-XSS-Protection (安全 csrf xss https 加密)