1.HTTP
HTTP/1.0和HTTP1.1支持的方法
方法 | 说明 | 支持的HTTP协议版本 |
---|---|---|
GET | 获取资源 | 1.0/1.1 |
POST | 传输实体主体 | 1.0/1.1 |
PUT | 传输文件 | 1.0/1.1 |
HEAD | 获得报文首部 | 1.0/1.1 |
DELETE | 删除文件 | 1.0/1.1 |
OPTIONS | 询问支持的方法 | 1.1 |
TRACE | 追踪路径 | 1.1 |
CONNECT | 要求用隧道协议连接代理 | 1.1 |
LINK | 建立和资源之间的联系 | 1.0 |
UNLINE | 断开连接关系 | 1.0 |
DNS解析将URL地址域名解析为IP地址。
使用cookie信息状态下的请求
2.常用14个状态码
- 101 协议升级
主要用于Websocket和HTTP2的升级。
http2:支持单个连接多次请求,二进制,压缩头部,服务器推送。
###2XX 成功
表示请求被正常处理了。 - 200 OK
响应报文中,随状态码返回信息因方法不同而不同。GET请求,资源实体会被返回,HEAD方法中,实体报文不随报文主体作为响应返回。 - 204 No Content
服务器请求成功,没有资源可以返回。浏览器请求返回204响应,浏览器页面不会更新。 - 206 Partial Content
客户端进行了范围请求,服务端成功执行了该部分GET请求,响应报文中包含Content-Range指定范围内的实体内容。3XX 重定向
说明浏览器要做某些特定的处理以正确处理请求 - 301 Moved Permanently
永久重定向。请求的资源已被分配新的URI
http://www.learning9527.cn/2018/03/15/HTTP状态码 => 指定资源不加”/“,会产生301状态码 - 302 Found
临时重定向,该状态码请求资源已经分配了新的URI,用户本次使用新的URI访问。 - 303 See Other
由于请求对应的资源存在另外一个URI,应使用GET方法定向获取请求的资源。
当 301、302、303 响应状态码返回时,几乎所有的浏览器都会把POST 改成 GET,并删除请求报文内的主体,之后请求会自动再次发送。301/302的标准是禁止将POST方法改为GET方法的 - 304 Not Modified
客户端发起附带条件的请求时,服务器允许访问资源但未满足条件的情况。
附带条件的请求是指采用GET方法的请求报文中包含 If-Match,If-Modified-Since,If-None-Match,If-Range,If-Unmodified-Since 中任一首部。
浏览器缓存分为强制缓存和协商缓存,优先访问强制缓存。 - 307 Temporary Redirect
临时重定向,遵循浏览器标准,不会从POST改为GET,对于响应,浏览器会做出不同选择。
hsts安全跳转,即(HTTP Strict Transport Security/HTTP严格传输)
原本用法是让post请求跳转到新的post请求,也用于hsts跳转。
功能是要求浏览器下次访问站点使用https访问,不再先http转https。可以避免SSL攻击,
攻击者在http跳转至https的时候介入,使得攻击者使用https协议与服务器交互。在服务器响应头中添加 Strict-Transport-Security,可以设置 max-age
- 强制缓存:分为expires和cache-control,前者是特定时间,后者是具体的时间长度,后者优先级大于前者
- 协商缓存:分为etag和last-modified,last-modified的设置标准为资源上次修改的时间,上次时间之后没有内容更新,304 Not Modified 作为响应返回。etag应对资源修改频繁情况下出现的,基于资源内容计算出来的值,优先级较高。
区别:强制缓存不访问服务器,返回结果200,协商缓存需要访问服务器,返回结果304。
4XX 客户端错误
- 400 Bad Request
表示请求报文中存在语法错误。需要修改请求的内容发生之后重新发送请求。 - 401 Unauthorized
表示发送的请求需要通过HTTP(BASIC认证/DIGEST认证)认证信息。之前若进行过一次请求,表示用户认证失败。
返回含有401的响应必须包含一个适用于被请求资源的WWW-Authenticate首部用以质询(challenge)用户信息。当浏览器初次接收到401响应,会弹出认证用的对话窗口。 - 403 Forbidden
表示对请求资源的访问被服务器拒绝了。 - 404 Not Found
服务器上无法找到请求的资源。5XX 服务器错误
- 500 Internet Server Error
服务器端执行请求发生错误,也可能是Web应用存在的bug或某些临时的故障。 - 503 Service Unavailable
表明服务器处于超负载或者正在停机维护,无法处理请求3.HTTP/HTTPS/HTTP2.0/原型SPDY间区别
HTTP与HTTPS的区别HTTPS需要CA申请认证,免费少,要收费
HTTP协议运行在TCP上,传输内容为明文,HTTPS运行在SSL/TLS上,SSL/TLS运行在TCP上,传输内容经过加密
HTTP与HTTPS使用完全不同的连接方式,端口不一样,前者为80,后者443
HTTPS可以有效防止运营商劫持,解决防劫持问题
HTTPS改造
- HTTPS降低用户访问速度,SSL握手,HTTPS对速度会有一定降低,合理优化部署,影响可以忽略
- 使用SPDY,HTTPS素的甚至比HTTP还快
SPDY加速网站
- 针对HTTP高延迟,采取多路复用方式,通过多个请求stream共享一个tcp连接的方式,解决了HOL blocking问题,降低了延迟同时提高了带宽利用率
- 请求优先级,产生新问题,连接共享可能导致关键请求被阻塞,SPDY可以给每个request设置优先级,重要的请求优先得到响应
- header压缩,合适的压缩方法可以减少包的大小和数量(压缩算法DEFLATE)
- 服务端推送,采用SPDY的网页,有一个style.css请求,服务器会推送style.css/style.js,再次获取style.js时候使用缓存获取
- 基于HTTPS的加密传输协议,提高了传输数据的可靠性
HTTP2.0
- SPDY的升级版,支持明文HTTP传输,而SPDY强制使用HTTPS
- 消息头压缩算法使用HPACK,非SPDY的DEFLATE
- 新特性,二进制格式,实现方便且健壮
- 新特性,多路复用,即连接共享,每一次的request请求都是用做连接共享机制的,根据id区分将request归属到各自不同的服务端请求中
- 新特性,header压缩,使用encoder减少传输header的大小,通讯双方都cache一份header-fileds表,避免重复,减少传输大小
- 新特性,服务端推送,和SPDY一样具有server push
参考:书籍《图解HTTP》
如有错误,烦请指正,谢谢!