是stateless协议,自身不对请求和响应之间的通讯状态进行保存。但随着技术发展,为了实现保存状态的功能,引入了Cookie技术。html
Cookie在请求和响应报文中写入信息来控制客户端的状态。数据库
GET,POST缓存
HEAD:得到报文首部,不返回主体部分。用于确认URL的有效性和资源更新的日期时间等。安全
PUT, DELETE: 不带验证机制,只当配合Web应用的验证机制或遵照REST标准时使用。服务器
OPTIONS: 询问支持的方法网络
CONNECT:要求用隧道协议链接代理。less
不会每次HTTP通讯后都断开,这样减小重复创建链接和断开的负担。编码
管线化:在链接的时候,发送请求,和响应请求分开了。能够并行发送多个请求,无需一个接一个等待响应。加密
以前的博客(有图)https://www.cnblogs.com/chentianwei/p/9485301.htmlspa
分为:通用的首部,请求首部,响应首部,实体首部4种。常见的见以前的博客的表格。
HTTP协议发送的报文主体内可含有多类型实体,一般是在图片或文本文件上传时使用:
multipart/form-data: 表单上传
multipart/byteranges:状态码206响应报文包含了多个范围的内容时使用
使用Content-Type,并加上boundary=XXX
集合对象中的每一个对象使用--XXX进行区分,最后的结尾用--XXX--标志来表明结束。
超大的图片下载过程,一旦中断,无需重新下载,由于它使用了Range Request。相似把大图切割成几部分,就像包同样。
Content-Range: bytes 5001-10000/10000
60多种,经常使用14种。
200: ok
204: No Content, 请求处理成功了,但返回的response message中没有主体部分。
206: Partial Content, 表示客户端进行了Range request,服务器成功执行了这部分GET请求。响应报文中包含了Content-Range指定的实体内容。
301: Move Permanently, 表示请求的资源已经被分配了新的URL, 之后应使用资源如今所指向的URL.
302:Found, 表示临时重定向,表示请求的资源被分配了新的URL,但愿本次使用这个URL访问。
303: See Other,表示请求对应的资源存在另外一个URL,应该使用GET方法定向获取请求的资源。其余和302相似。
304: Not Modified, 表示客户端发送带条件的请求,服务器容许请求访问资源,但未知足条件的状况。304返回时,不带响应的主体部分。
⚠️(if-Match, If-Modified-Since,If-None-Match, If-Range, If-Unmodified-Since)首部
307: Temporary Redirect等同302,业界习惯POST变成GET。
400: Bad Request, 表示请求报文中有语法错误❌。
401 Unauthorized, 表示须要经过HTTP认证
403 Forbidden,服务器对请求资源的访问拒绝。实体的主体部分看对缘由的描述。
404 Not Found, 服务器上没法找到请求的资源,除此以外也能够在服务器端拒绝请求而且不想说明理由时使用。
500 Internal Server Error ,表示服务器在执行请求时出现❌,bug,临时故障。
503 Service Unavailable, 表示服务器暂时不可用,超载,停机维护。
⚠️ 状态码有可能和真实情况不一致。
让一台服务器托管了N多个域名。 Web托管服务的供应商就是这么作的。
所以,发送HTTP请求,必须使用完整的主机名或域名URL
代理:使用代理服务器能够减小网络带宽的流量(利用缓存技术)
缓存代理proxy:在代理服务器上储存从源服务器上发过来的response message。
缓存有效期。客户端也能够缓存。
网关:和代理相似,但能够提供非HTTP协议服务。提升了安全性,如:链接数据库,链接信用卡结算系统
隧道: 使用SSL等加密手段进行通讯。确保安全通讯。
4种类型:
General Header Fields,
Request Header Fields, 补充了请求的附加内容, 客户端信息, 响应内容相关优先级等信息。
Response Header Fields, 补充了响应的附加内容,也会要求客户端附加额外的内容信息。
Entity Header Fields, 报文实体部分使用的首部,补充了资源内容更新时间等和实体有关的message.
博客相关知识:https://www.cnblogs.com/chentianwei/p/9374341.html
public/private: 是否其余用户也能够利用缓存。
no-cache:实际意思是不缓存过时的资源
若是是响应指令,表明缓存前必须先确认其有效性。若是是请求指令,表明向源服务器取资源不要缓存。
目的:防止从缓存中返回过时的资源。
no-store: 不储存缓存资源,真正的不缓存。
max-age: 表明资源保存为缓存的最长时间。max-age比Expires优先级高。
max-stale: 最大过时时间。即便超过max-age,但没超过max-stale 缓存仍然会被客户端接收。
规定使用分快传输的编码方式。
用于追踪传输路径,报文通过代理和网关时会在via中附加该服务器的信息。
告知用户一些和缓存相关的问题的警告。
Warning: [警告码][主机: 端口号]"[警告内容]"([日期时间])
6.41 accept
若是是星号*,If-Match:*, 则忽略ETag值。只要资源存在就处理。
If-Match和If-None-Match做用相反。
6.51 accept-ranges
工做机制: 用户识别,状态管理。
Set-Cookie: 响应首部字段
Cookie: 请求首部字段
属性: