http

Beacon

Beacon

Fetch

请求添加keeppalive参数


获取url参数

 var url = window.location.search;

      if (url.indexOf('?') !== -1) {

        url = url.substr(1);

        var querys = url.split('&');

        for (var i = 0; i < querys.length; i++) {

          this.query[querys[i].split('=')[0]] = querys[i].split('=')[1];

        }

      }


axios 取消请求


CSRF

XXS

一段恶意的js代码注入到目标网站(对用户输入都做校验或者转义)


http缓存

响应头 Cache-control

max-age 决定客户端资源被缓存多久。

s-maxage 决定代理服务器缓存的时长。

no-cache 表示是强制进行协商缓存。

no-store  是表示禁止任何缓存策略。

public 表示资源即可以被浏览器缓存也可以被代理服务器缓存。

private  表示资源只能被浏览器缓存。


强制缓存

返回200 从内存中读取

     //  往后的10秒钟内如果该资源被再次请求,则从缓存中读取

     'Cache-Control':'max-age=10'


协商缓存

返回304  从内存中读取

1.基于last-modified的协商缓存实现方式是:

首先需要在服务器端读出文件修改时间,

将读出来的修改时间赋给响应头的last-modified字段。

最后设置Cache-control:no-cache

当客户端读取到last-modified的时候,会在下次的请求标头中携带一个字段:If-Modified-Since(服务器第一次修改时候给他的时间)

(发起 HTTP 请求的时候,服务器可以返回Last-Modified响应头,这个响应头的值是一个时间戳。如果服务器这么做了,那么浏览器会缓存这个资源,并且在今后请求该资源的时候,会带有if-modified-since请求头,它的值是上一次Last-Modified响应头中的时间戳。服务器收到带有if-modified-since请求头的请求,根据请求头中的时间戳,对文件进行判断,如果文件内容在该时间戳之后到当前时间里没有被修改,那么服务器返回一个 304 响应,该响应表示只有 HEAD 没有 BODY。浏览器如果收到 304 响应,就会以缓存的内容作为 BODY。)

2.基础ETag的协商缓存

ETag就是将原先协商缓存的比较时间戳的形式修改成了比较文件指纹(根据文件内容计算出的唯一哈希值)

你可能感兴趣的:(http)