JavaScript不要越俎代庖css
针对功能设置apihtml
逐步实现功能web
优化编程
实际上和全部网络标准同样就是IETF指定的 有RFC指导文档
HTTP1.0 无长链接 -> HTTP1.1 -> +TLS/SSL(密文 安全性) -> http2.0api
JavaScript在浏览器中最基础的部分标准化。
BOM浏览器
DOM缓存
其实以前复习记过这方面笔记 虽然没记完 我基于以前的笔记接着记吧安全
自己是由多行(CR+LF作换行符)数据构成的字符串文本服务器
请求行/状态行 请求/响应首部字段 通用首部字段 实体首部字段 针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更新时间等与实体有关的信息。 其余
一般报文主体等于请求实体可是当发生编码操做的时候试题内容会发生变化 致使和报文实体产生差别
mime的意义是发送多种数据的多部份对象集合 在请求头/响应头中说明mime的类型(content-type首部字段) 而后在主体部分传输对应的类型实体
(例子主要就是断点下载) 这种状况下 在请求首部加Range 响应首部是 Content-Length Content-Length 针对范围请求响应会返回206的响应报文 没法返回范围请求的时候就会返回200 和完整的实体内容
内容协商机制是指客户端和服务器端就响应的资源内容进行交涉,而后提供给客户端最为适合的资源。内容协商会以响应资源的语言、字符集、编码方式等做为判断的基准。
对于内容协商机制 请求报文的首部有cookie
内容协商的类型有
认证会检查请求头字段中的Authorization字段
状态码 | 类别 | 缘由短语 |
---|---|---|
1XX | informational | 接受的请求正在处理 |
2XX | Success | 请求正常处理完毕 |
3XX | Redirection | 须要进行附加操做来完成请求 |
4XX | client error | 服务器没法处理请求 |
5XX | Server error | 服务器处理出错 |
(当30一、30二、303响应状态码返回时,几乎全部的浏览器都会把POST改为GET,并删除请求报文内的主体,以后请求会自动再次发送。30一、302标准是禁止将POST方法改变成GET方法的,但实际使用时你们都会这么作。)
Virtual Host
在相同的IP地址下 因为虚拟主机能够寄存多个不一样主机名 和 域名的网站 所以在发送HTTP请求的时候要指定HOST (HTTP请求头首部)
中间人身份 每次经过代理服务器转发请求或者响应 会追加写入Via头部信息 代理转发响应时,缓存代理(Caching Proxy)会预先将资源的副本(缓存)保存在代理服务器上。当代理再次接收到对相同资源的请求时,就能够不从源服务器那里获取资源,而是将以前缓存的资源做为响应返回。
网管是转发其余服务器通讯数据的服务器 网关的工做机制和代理十分类似。而网关能使通讯线路上的服务器提供非HTTP协议服务 网关能够提升通讯的安全性
隧道是在相隔很远的客户端和服务器二者之间进行中转 并保持双方通讯链接的应用程序 隧道自己不会解析http请求
举个例子
GET / HTTP/1.1
Host: hackr.jp
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9, /; q=0.8
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Connection: keep-alive
If-Modified-Since: Fri, 31 Aug 2007 02:02:20 GMT
If-None-Match: "45bae1-16a-46d776ac"
Cache-Control: max-age=0
例子2
HTTP/1.1 304 Not Modified
Date: Thu, 07 Jun 2012 07:21:36 GMT
Server: Apache
Connection: close
Etag: "45bae1-16a-46d776ac"
使用首部字段是为了给浏览器和服务器提供报文主体大小、所使用的语言、认证信息等内容
通用首部字段
首部字段名 | 说明 |
---|---|
Cache-Control | 控制缓存行为 |
Connection | 逐跳首部,连接的管理 |
Date | 建立报文的日期 |
Pragma | 报文指令 |
Trailer | 报文末端的首部一览 |
Transfer-Encoding | 指定报文主体的传输编码方式 |
Upgrade | 升级为其余协议 |
Via | 代理服务器相关信息 |
Warning | 错误通知 |
请求首部字段
首部字段名 | 说明 |
---|---|
Accept | 用户代理可处理的媒体类型 |
Accept-Charset | 优先的字符集 |
Accept-Encoding | 优先的内容编码 |
Accept-Language | 优先的天然语言 |
Authorization | web认证信息 |
Expect | 期待服务器的特定行为 |
From | 用户的电子邮箱地址 |
Host | 请求资源所在服务器 |
if-Match | 比较实体标记 (ETag) |
if-Modified-Since | 比较资源的更新时间 |
if-None-Match | 比较实体标记 与if-Match相反 |
if-Range | 资源未更新时发送实体Byte的范围 |
Range | 实体的字节范围请求 |
Referer | 对请求中的URL原始获取方 |
TE | 传输编码的优先级 |
User-Agent | HTTP客户端程序的信息 |
响应首部字段
首部字段名 | 说明 |
---|---|
Accept-Ranges | 是否接收range请求 |
Age | 推算资源建立通过时间 |
ETag | 资源的匹配信息 |
Location | 令客户端重定向到指定URL |
Proxy-Authenticate | 代理服务器对客户端的认证信息 |
Retry-After | 对再次发起请求的时机要求 |
Server | Http服务器的安装信息 |
Vary | 代理服务器缓存的管理信息 |
WWW-Authenticate | 服务器对客户端的认证信息 |
实体首部字段
首部字段名 | 说明 |
---|---|
Allow | 资源可支持的HTTP方法 |
Content-Encoding | 实体主体适用的编码方式 |
Content-Language | 实体主体的天然语言 |
Content-Length | 实体主体的大小 |
Content-Location | 替代对应资源的URL |
Content-Md5 | 实体主体的报文摘要 |
Content-Range | 实体主体的位置范围 |
Content-Type | 实体主体的媒体类型 |
Expires | 实体主体过时后的日期时间 |
Last-Modified | 资源的最后修改日期和时间 |
非正式定义的首部字段
开始状态管理所使用的Cookie信息 响应首部字段
字段值
首部字段Cookie会告知服务器,当客户端想得到HTTP状态管理支持时,就会在请求中包含从服务器接收到的Cookie。接收到多个Cookie时,一样能够以多个Cookie形式发送。
PS:cookie愈来愈大 怎么办
功能
HTTP/1.1版本的默认链接都是持久链接。为此,客户端会在持久链接上连续发送请求。当服务器端想明确断开链接时,则指定Connection首部字段的值为Close。
HTTP/1.1以前的HTTP版本的默认链接都是非持久链接。为此,若是想在旧版本的HTTP协议上维持持续链接,则须要指定Connection首部字段的值为Keep-Alive。
ps : 浏览器的缓存机制 !!! http1.0 硬缓存 expires 协商缓存 last-Modified http 1.1 硬缓存 cache-control 协商缓存 Etag
功能
参数 | 功能 |
---|---|
public | 其余用户也可使用缓存 |
private | 响应只以特定的用户做为对象 |
no-cache | 表示客户端将不会接收缓存过的响应。因而,“中间”的缓存服务器必须把客户端请求转发给源服务器。同时能够写参数例如 Cache-control:no-cache=Location 这种时候客户端接收到这个被指定参数值的首部字段对应的响应报文 将不能使用缓存 |
no-store | 真的不缓存 |
s-maxage | 指定缓存期限 功能和max-age类似 可是 s-maxage 提供适用于多位用户使用的公共缓存服务器 |
max-age | 设置缓存时间 超过则转发给源服务器 |
min-fresh | 超过这个时间的资源不新鲜 过了的就不要了 |
max-stale | 指定的缓存资源过时也接受 |
only-if-cache | 表示客户端仅在缓存服务器本地缓存目标资源的时候才会要求返回 也就是要求缓存服务器不从新加载响应 若是不能从缓存服务器获得响应 则返回504 |
HTTP2
HTTP3