共计 2364 个字符,预计需要花费 6 分钟才能阅读完成。
Traditionally, why has it been better to serve site assets from multiple domains?
Do your best to describe the process from the time you type in a website’s URL to it finishing loading on your screen.
What are the differences between Long-Polling, Websockets and Server-Sent Events?
Explain the following request and response
headers:
Diff. between Expires, Date, Age and If-Modified-…
Do Not Track
Cache-Control
Transfer-Encoding
ETag
X-Frame-Options
缓存存储策略
Cache-Control
max-age
public // 是
private // 表示是否被代理服务器缓存 否
no-cache
no-store
缓存过期策略
Expires
缓存对比策略
REQ ETags, RESP If-None-Match
REQ Last-Modified, RESP If-Modified-Since
HTTP1.0 缓存字段详解
1.Pragma。设置页面是否缓存,为 Pragma 则缓存,no-cache 则不缓存。
Expires。有了 Pragma 来禁用缓存,自然也需要有个东西来启用缓存和定义缓存时间。如果 Pragma 头部和 Expires 头部同时存在,则起作用的会是 Pragma。,响应报文中 Expires 所定义的缓存时间是相对服务器上的时间而言的,其定义的是资源“失效时刻”,如果客户端上的时间跟服务器上的时间不一致(特别是用户修改了自己电脑的系统时间),那缓存时间可能就没啥意义了。
HTTP1.1 缓存字段详解
Cache-Control: 定义缓存过期时间。若报文中同时出现了 Expires 和 Cache-Control,则以 Cache-Control 为准。
(1)max-age=600。表示文件在本地应该缓存,且有效时长是 600 秒(从发出请求算起)。在接下来 600 秒内,如果有请求这个资源,浏览器不会发出 HTTP 请求,而是直接使用本地缓存的文件。
(2)no-cache。实际上她是会被缓存的,只不过每次在向客户端(浏览器)提供响应数据时,== 缓存都要向服务器评估缓存响应的有效性 ==
(3)no-store 响应不被缓存的意思。
Last-Modified / If-Modified-Since(1)Last-Modified: 标示这个响应资源的最后修改时间。web 服务器在响应请求时,告诉浏览器资源的最后修改时间。
(2)If-Modified-Since: 当资源过期时(使用 Cache-Control 标识的 max-age),发现资源具有 Last-Modified 声明,则再次向 web 服务器请求时带上头 If-Modified-Since,表示请求时间。若服务端请求资源的最后修改时间较新,则响应资源内容(HTTP 200); 若最后修改时间较旧,则响应 HTTP 304,告知浏览器继续使用所保存的 cache。
Etag/If-None-Match: Etag/If-None-Match 也要配合 Cache-Control 使用。(1)Etag: web 服务器响应请求时,告诉浏览器当前资源在服务器的唯一标识(生成规则由服务器觉得)
(2)If-None-Match: 当资源过期时(使用 Cache-Control 标识的 max-age),发现资源具有 Etage 声明,则再次向 web 服务器请求时带上头 If-None-Match(Etag 的值)。服务器与被请求资源的相应校验串进行比对,决定返回 200 或 304。
既生 Last-Modified 何生 Etag?HTTP1.1 中 Etag 的出现主要是为了解决几个 Last-Modified 比较难解决的问题:
(1) Last-Modified 标注的最后修改只能精确到秒级,如果某些文件在 1 秒钟以内,被修改多次的话,它将不能准确标注文件的修改时间。
(2) 如果某些文件会被定期生成,当有时内容并没有任何变化,但 Last-Modified 却改变了,导致文件没法使用缓存。
(3) 有可能存在服务器没有准确获取文件修改时间,或者与代理服务器时间不一致等情形。
Last-Modified 与 ETag 是可以一起使用的,服务器会优先验证 ETag,一致的情况下,才会继续比对 Last-Modified,最后才决定是否返回 304。
What are HTTP methods? List all HTTP methods that you know, and explain them.
HTTP: Status 200 – 服务器成功返回网页
301 永久转移
302 临时转移
304 not modified
400 bad request
401 not auth
403 forbidden
500 内部错误
HTTP: Status 404 – 请求的网页不存在
HTTP: Status 503 – 服务不可用
https
服务器向客户端发送公钥和证书
客户端校验证书,并生成密码,用公钥加密
服务端解析到密码后,以后的东西都用这个密码
想 `
http2
多路复用 允许同时多个请求,http1.1 对于同一个域名同时只能有 2 - 8 个请求
websocket
是一个基于 tcp 的网络协议,实现了服务端与客户端的互相通讯,服务器可以主动向客户端通讯
xss
跨站脚本攻击是指服务端未对用户输入做验证使得 HTML 直接执行用户输入的恶意脚本
csrf
伪造用户请求,比如访问 a 网站之后,用户访问了恶意的 b 网站,b 网站回向 a 网站发送恶意请求
避免使用 get 进行敏感操作使用 token 令牌