看完 <<图解HTTP>> 的一些小收获,也相当于读书笔记
TCP/IP从上往下分为四层
- 应用层: 向用户提供应用服务时通信的活动t
- 传输层: 提供处于网络连接中两台计算机之间数据传输
- 网络层: 处理网络上流动的数据包
- 数据链路层: 处理连接网络硬件部分
HTTP方法
- Get: 指定资源经服务端解析后返回响应内容, 建议只用来读取数据,而不对数据进行操作
- Post: 传输实体主体,可能会创建新的资源或修改原始资源
- Put: 传输文件,不带验证,不推荐使用
- Head: 和Get类似,但不返回报文主体也就是资源的文本部分
- Delete: 请求服务器删除资源,不带验证,不推荐使用
- Options: 查询针对请求URI指定资源支持的方法
- Trace: 让Web服务器将请求通信环回给客户端
- Connect: 在与代理服务器通信时建立隧道
HTTP状态码
1xx(信息状态码)
表示服务端正在处理请求
2xx(成功状态码)
- 200 OK:从客户端发出的请求被服务端正在处理
- 204 No Content:服务端接收的请求已成功处理,不返回实体
- 206 Partical Content: 表明客户端进行了范围请求,服务器处理了部分Get请求
3xx(重定向状态码)
- 301 Moved Permanently:请求的资源已分配新URI(永久重定向),如果不是一个Get或Head请求,禁止进行自动重定向而是应该让用户确认
- 302 Found:请求的资源已分配新URI,本次使用新URI访问(临时性重定向),如果不是一个Get或Head请求,禁止进行自动重定向而是应该让用户确认
- 304 Not Modified:表示请求资源未修改过,直接使用缓存
4xx(客户端错误状态码)
- 400 Bad Request:请求报文存在语法错误
- 401 Unauthorized:需要认证或者认证失败
- 403 Forbidden:禁止访问
- 404 Not Found:服务器无法找到请求的资源
5xx(服务器错误状态码)
- 500 Internal Server Error:服务器执行请求时发生错误
- 503 Service Unavailable:服务器超负载或停机维护
与HTTP协作的Web服务器
代理:接收客户端发送请求并转发给其他服务器,转发时附加Via首部字段标记经过的主机信息.
- 缓存代理:预先将资源副本保存在代理服务器上
- 透明代理:转发时不进行任何加工
- 网关:将Http请求转化为其他协议通信
- 隧道:建立服务器的通信线路,使用SSL加密,保证安全通信
HTTP首部
通用首部字段:请求和响应报文双方都会使用的首部
Cache-Control 操作缓存工作机制
- public:其他用户也可利用缓存
- private:响应只以特定用户作为对象
- no-cache:无论本地缓存是否过期必须先与服务器确认返回的响应是否发生了变化,未发生变化才返回
- no-store:禁止缓存,每次都要下载完整的响应
- max-age:当时间小于指定时间时,直接使用缓存
- max-stable:允许读取时间小于指定时间的缓存对象(即使过期)
- min-fresh:如果资源超过指定时间后仍有用则返回
- only-if-cached:要求来自缓存,无所谓新鲜
- must-revalidate:本地缓存未过期前,直接使用本地缓存,过期后每次向服务器进行有效性校验
- no-transform:不逊于转换实体媒体类型
Connection
- 任意首部字段名:删除指定字段后再进行转发
- close:HTTP/1.1默认是持久化连接,使用close来断开连接
- Date 表明创建HTTP报文时间和日期
- Trailer:事先说明在报文主体后记录了哪些首部字段
- Transfer-Encoding:规定传输报文主体时编码方式
- upgrade:可以指定一个不同的通信协议
- Via:追踪客户端与服务器之间的请求和响应报文
- Warning:警告码 警告的主机端口号 警告内容 日期时间
请求首部字段
- Accept:用户可处理的媒体类型及其相对优先级
- Accept-Charset:支持的字符集
- Accept-Encoding:支持的字符编码(Unicode字符集有UTF-8,UTF-18等多种字符编码方式)
- Accept-Language:支持的自然语言集
- Authorization:告知服务器用户代理的认证信息
- Exceprt:告知服务器期望出现的行为
- Host:明确指出请求主机名
- If-xxx:判断条件为真时CIA执行请求
- Max-Forwards:最大转发次数
- proxy-Authorization:接收到代理服务器发来的认证质询时,客户端发送包含此首部请求
- Referer:告知服务器请求的原始资源的URI
- TE:告知服务器客户端能处理响应的传输编码方式与相对优先级
- User-agent:将创建请求的用户代理标示传达给服务器
响应首部字段
- Age:表示实体产生到现在过了多久,单位为秒
ETag:实体唯一标识
- 强Tag:无论实体发生多细微变化都改变
- 弱Tag:资源根本改变才改变
- Location:将响应接收放引导至某个与请求URI位置不同的资源
- proxy-Authenticate:将代理服务器要求的认证信息发送给客户端
- Retry-After:告知客户端在多久之后再次发送请求
- Server:告知客户端当前服务器上安装的HTTP服务应用程序信息
- Vary:代理服务器接受到源服务器包含vary请求后,再次收到请求仅返回相同vary首部的缓存,其他到源服务器重新获取
实体首部字段
- Allow:客户端能够支持Request-URI指定资源的所有的HTTP方法
- Content-Encoding:客户端服务器对实体主题部分的内容编码方式
- Expires:资源失效日期,在此日期前,缓存一直有效
Cookie字段
Set-Cookie
- expires:Cookie有效期,默认到浏览器关闭前
- path:限制cookie发送范围目录,默认文档所在目录
- domain:指定Cookie可以送达的主机名,结尾一致时也可以送达
- secure:仅在HTTPS才可发送Cookie
- HttpOnly:使JS脚本无法获得Cookie