http 学习 摘要 (未完待续)
最近疯狂学习,脑子有点撑不住!
请求报文构成
响应报文构成
get
post
put
head
delete
OPTIONS
TRACE
CONNECT
200 ok
204 No Content 请求处理成功 但没有资源可返回
206 请求部分内容,并且请求成功
301 Moved Permanently 请求的资源已经被分配了新的URI 以后应使用资源现在所指的URI
302 Found 临时重定向 请求的资源已被分配了新的URI 希望本次能使用新的URI
303 See Other 由于请求对应的资源存在者另一个URI 应使用GET 方法定向获取请求的资源 明确表示客户端应当采用GET方法获取资源 这是和302的区别
304 Not Modified 表示客户端发送附带条件的请求时, 服务器端允许请求访问资源, 但未满足条件的情况。304 状态码返回时, 不包含任何响应的主体部分。 304 虽然被划分在 3XX 类别中, 但是和重定向没有关系
307 Temporary Redirect 临时重定向 和302相同的含义
400 Bad Request 报文中存在语法错误
401 Unauthorized 表示发送的请求需要有通过 HTTP 认证(BASIC 认证、DIGEST 认证) 的认证信息。 另外若之前已进行过 1 次请求, 则表示用 户认证失败。返回含有 401 的响应必须包含一个适用于被请求资源的 WWW-Authenticate 首部用以质询(challenge)用户信息。 当浏览器初次接收到 401 响应, 会弹出认证用的对话窗口。
403 Forbidden 对请求资源的访问被服务器拒绝了
404 Not Found 该状态码表明服务器上无法找到请求的资源。 除此之外,也可以在服务器端拒绝请求且不想说明理由时使用。
500 Internal Server Error 服务器端在执行请求是发生了错误,可能是web应用存在的bug或者否写临时故障。
503 Service Unavailable 表明服务器暂时处于超负载或正在进行停机维护, 现在无法处理请求。 如果事先得知解除以上状况需要的时间, 最好写入RetryAfter 首部字段再返回给客户端。
不少返回的状态码响应都是错误的, 但是用户可能察觉不到这点。比如 Web 应用程序内部发生错误, 状态码依然返回 200 OK, 这种情况也经常遇到。
数据转发应用程序
代理 缓存技术
网关 安全技术
隧道 安全通讯线路
报文 分 请求报文 和 响应报文 报文的结构如下
请求报文首部
响应报文首部
使用首部字段是为了给浏览器和服务器提供报文主体大小、 所使用的语言、 认证信息等内容。
HTTP 首部字段是由首部字段名和字段值构成的, 中间用冒号“:” 分隔
例如 首部字段名:字段值 Content-Type: text/html
字段值可以有多个字段值
当重复出现同一个字段名的时候不同浏览器会有不同的反映。
请求首部字段
响应首部字段
通用首部字段
实体首部字段 Entity header field
End-to-end首部 Hop-by-hop首部 哈哈哈 爸爸没看懂那吊到底 讲的啥! 暂且pass! 6.2.6
通用首部各字段名的解释及字段值
Cache-Control 操作缓存的工作机制
使用 no-cache 指令的目的是为了防止从缓存中返回过期的资源
no-cache 代表不缓存过期的资源, 缓存会向源服务器进行有效期确认后处理资源, 也许称为 do-notserve-from-cachewithout-revalidation 更合适。
no-store 该指令规定缓存不能在本地存储请求或响应的任一部分
例 :Cache-Control:max-age=604800
当指定 max-age 值为 0, 那么缓存服务器通常需要将请求转发给源服务器。
使用 max-stale 可指示缓存资源, 即使过期也照常接收。
如果指令未指定参数值, 那么无论经过多久, 客户端都会接收响应;
如果指令中指定了具体数值, 那么即使过期, 只要仍处于 max-stale指定的时间内, 仍旧会被客户端接收
客户端仅在缓存服务器本地缓存目标资源的情况下才会要求其返回。 换言之, 该指令要求缓存服务器不重新加载响应, 也不会再次确认资源有效性。 若发生请求缓存服务器的本地缓存无响应, 则返回状态码 504 Gateway Timeout。
代理会向源服务器再次验证即将返回的响应缓存目前是否仍然有效。
要求所有的缓存服务器在接收到客户端带有该指令的请求返回响应之前, 必须再次验证缓存的有效性。
无论是在请求还是响应中, 缓存都不能改变实体主体的媒体类型 ;可防止缓存或代理压缩图片等类似操作
字段名 Connection
1 控制不再转发给代理的首部字段
表示删除Upgrade字段
2 管理持久连接Date 字段名
表明创建 HTTP 报文的日期和时间
Trailer
说明在报文主体后记录了哪些首部字段,该首部字段可应用在 HTTP/1.1 版本分块传输编码时。
Transfer-Encoding
Upgrade
检测 HTTP 协议及其他协议是否可使用更高的
版本进行通信, 其参数值可以用来指定一个完全不同的通信协议。
Via
使用首部字段 Via 是为了追踪客户端与服务器之间的请求和响应报文的传输路径。Via 首部是为了追踪传输路径, 所以经常会和 TRACE 方法一起使用。
Warning
该首部通常会告知用户一些与缓存相关的问题的警告。
请求首部字段
Accept
通知服务器, 用户代理能够处理的媒体类型及媒体类型的相对优先级。 可使用 type/subtype 这种形式, 一次指定多种媒体类型。
Accept-Charset
Accept-Encoding
用来告知服务器用户代理支持的内容编码及内容编码的优先级顺序。 可一次性指定多种内容编码。
Accept-Language
首部字段 Authorization 是用来告知服务器, 用户代理的认证信息(证书值) 。 通常, 想要通过服务器认证的用户代理会在接收到返回的401 状态码响应后, 把首部字段 Authorization 加入请求中。 共用缓存在接收到含有 Authorization 首部字段的请求时的操作处理会略有差异
Expect
客户端使用首部字段 Expect 来告知服务器, 期望出现的某种特定行为。 因服务器无法理解客户端的期望作出回应而发生错误时, 会返回状态码 417 Expectation Failed。
From