请求行,请求头,正文
状态行,响应头,正文
GET(获取资源 的方法)
POST(传输实体的方法)
PUT(用于上传文件)
HEAD(获取首部的方法)
DELETE(删除文件的方法)
OPTIONS(询问支持的方法)
TRACE(追踪请求的方法)
CONNECT(使用安全连接的方法)
长连接是在一次连接建立后保持,在本次连接过程中持续进行多次HTTP请求。
短连接是在建立连接获取资源后就立即断开,每次发起HTTP请求会建立一个新的连接。
流水线即在建立连接后,采用异步的方式进行并发请求的方法。
是一种客户端存储技术,主要用于客户端信息的持久化,随着本地存储形式的多种支持的出现,客户端的信息存储对cookie的依赖性大大降低。
主要用于跟踪状态,用于辅助服务端识别当前访问的用户是谁。
服务端发送set-cookie新建cookie到请求头中,cookie一般针对于某一个站点,还具有存活时间,也就是有效时间。
Domain指定哪些域名下是可以使用的,path是对请求使用cookie的url具体限制的细化。
为了避免跨站脚本攻击一般把cookie设置为HttpOnly,防止js获取到cookie
浏览器禁用cookie的话需要采用url重写技术实现session id的传递。
session是服务端存储技术,主要用于状态的维护。sessionId由服务端生成,服务端生成后,存储在内存或redis中,用于再次到达的请求的再识别。
缓存可以缓解服务器的压力,降低获取资源的延迟性,读取速度更快。
客户端可以实现缓存,代理服务器也可以实现缓存。
Cache-Control用于控制缓存
Cache-Control:no-store不允许缓存
Cache-Control:no-cache需要先向服务器确认是否有效,有效才能进行缓存
Cache-Control:private只能为单个用户使用
Cache-Control:public作为公共资源进行缓存
Cache-Control:max-age=31536000在请求中用于指定可接受的缓存间隔时间,在响应中用于指定该资源的最大缓存保存时间。
Expires也可以指定过期时间,是过期的具体的时间点。
HTTP1.1优先处理max-age,HTTP1.0中max-age会被忽略。
ETag: "82e22293907ce725faf67773957acd12"
ETag主要用于比对版本号进行判断缓存的有效性,将其放置在If-None-Match请求头中,用于判断有效性。有效将返回304Not Modified
Last-Modified也用于缓存有效性验证,一般存在响应头中,用于表明最近一次修改时间,
客户端请求带上If-Modified-Since可以用于判断基于时间的资源有效性,有效返回304Not Modofied,否则返回200修改后的资源。
客户端与服务端进行各种配置的协商,例如语言。编码方式,内容显示格式等等。
客户端可以使用Accept、Accept-Charset、Accept-Encoding、Accept-Language等请求头请求指定的资源。
代理缓存:可以在请求后服务端指定Vary:Accept-Language用于指定相同语言类型的可以返回缓存。否则需要重新请求资源。
内容编码:采用协商的编码格式减少数据量。Accept-Encoding与Content-Encoding
可以通过使用请求头Range指定获取资源的范围
成功将返回206Partial Content,不支持将返回200,范围越界将返回416 Requested Range Not Satisfiable
服务端使用Accept-Ranges:bytes告知可以获取部分数据,Accept-Ranges:none表示不支持部分数据
正向代理用于代替客户端发起请求,主要用于缓存提高效率,统一请求管理等。
反向代理主要用于请求的日志记录,负载均衡等,在服务器端
网关主要用于协议的转换
隧道主要用于加密请求。
对称加密:双方采用相同的秘钥进行加解密。
非对称加密:双方采用不同的公钥与私钥进行加解密。非对称加密也可以用于验签:使用私钥进行加密,使用公钥解密验签。
先使用非对称加密的方式传输对称秘钥,接着采用对称加密的方式进行数据传输。