http是无状态协议,通常使用cookie进行状态管理。
http报文
http报文分为报文首部(服务器端和客户端需处理的请求或相应的内容及属性)和报文主体(应被发送的数据)两部分。两者由最初出现的空行(CR+LF)来划分。通常,并不一定有报文。
请求报文及响应报文结构
在请求中,http报文由方法、URI、HTTP版本、HTTP首部字段等部分组成。
使用首部字段是为了给浏览器和服务器提供报文主体大小、所使用语言、认证信息等内容。
在响应中,HTTP报文由HTTP版本、状态码及HTTP首部字段3部分组成。
四种HTTP首部字段类型
- 通用首部字段
- 请求首部字段
- 响应首部字段
- 实体首部字段。
状态码分类
类别 | 原因段誉 | |
---|---|---|
1xx | 信息性状态码 | 接受的请求正在处理 |
2xx | 成功状态码 | 请求正常处理完毕 |
3xx | 重定向状态码 | 需要进行附加操作以完成请求 |
4xx | 客户端错误 | 服务器无法处理请求 |
5xx | 服务端错误 | 服务器处理请求出错 |
常见状态码
101 Switching Protocols | 服务器已经理解了客户端的请求,并将通过Upgrade 消息头通知客户端采用不同的协议来完成这个请求。在发送完这个响应最后的空行后,服务器将会切换到在Upgrade 消息头中定义的那些协议。 只有在切换新的协议更有好处的时候才应该采取类似措施。例如,切换到新的HTTP 版本比旧版本更有优势,或者切换到一个实时且同步的协议以传送利用此类特性的资源。 |
---|---|
200 OK | 从客户端发来的请求在服务器端被正常处理了 |
201 | 请求成功并且服务器创建了新的资源。 |
204 No Content | 服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档 |
206 Partial Content | 客户端进行了范围请求,而服务端只执行了这部分的GET请求 |
301 Moved Permanently | 永久性重定向,请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替 |
302 Found | 临时性重定向。表示目标资源临时移动到了另一个 URI 上。由于重定向是临时发生的,所以客户端在之后的请求中还应该使用原本的 URI。服务器会在响应 Header 的 Location 字段中放上这个不同的 URI。浏览器可以使用 Location 中的 URI 进行自动重定向。注意:由于历史原因,用户代理可能会在重定向后的请求中把 POST 方法改为 GET 方法。如果不想这样,应该使用 307(Temporary Redirect) 状态码 |
303 See Other | 请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源。不管原请求是什么方法,重定向请求的方法都是 GET(或 HEAD,不常用) |
304 Not Modified | 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源 |
307 Temporary Redirect | 临时重定向。该状态码与302有着相同的含义。尽管302标准禁止POST变换成GET,但实际使用时大家并不遵守。307会遵照浏览器标准,不允许浏览器将POST变成GET。但是,对于处理响应时的行为,每种浏览器有可能出现不同的情况。 |
400 Bad Request | 请求报文中存在语法错误 |
401 Unauthorized | 表示发送的请求需要有通过HTTP认证的认证信息。另外若之前已进行过一次请求,则表示用户认证失败。返回含有401响应必须包含一个适用于被请求资源的WWW-Authenticate 首部用以质询用户信息。当浏览器初次接收到401响应,会弹出认证用的对话窗口。 |
403 Forbidden | 对请求资源的访问服务器拒绝了。未获得文件系统的访问授权,访问权限出现某些问题(从未授权的发送源IP地址试图访问)等列举情况都可能是发生403的原因 |
404 Not Found | 表明服务器上无法找到请求的资源或者服务器拒绝请求又不想说明理由时。 |
500 Internal Server Error | 服务器在执行请求时发生了错误,也有可能是Web应用存在bug或某些临时的故障 |
503 Service Unavailable | 表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。如果事先得知解除以上状况需要的视觉,最好写入Retry-After首部字段在返回给客户端。 |
3XX区别
为Cookie服务的首部字段
cookie的工作机制是用户识别及状态管理。
首部字段名 | 说明 | 首部类型 |
---|---|---|
Set-Cookie | 开始状态管理所使用的Cookie信息 | 响应首部字段 |
Cookie | 服务器接受到的Cookie信息 | 请求首部字段 |
HTTPS
把添加了加密及认证机制的HTTP称为HTTPS。(HTTP Secure)
HTTP + 加密 + 认证 + 完整性保护 = HTTPS
HTTPS采用混合加密机制,即在交换密钥环节使用公开密钥加密方式,在之后的建立通信交换报文阶段使用共享密钥加密方式。
HTTPS使用SSL和TLS这两个协议。
SSL慢的两个原因 :
- 通信慢。
- SSL必须进行加密处理。