美文网首页
Cors深度探索结果

Cors深度探索结果

作者: 99ZY | 来源:发表于2020-12-26 12:12 被阅读0次

    【原创】Cors跨域资源共享;

    1、W3c的标准规范;

    2、兼容 >= IE10;

    3、cache-control 不缓存POST请求;

    4、预检 OPTIONS 请求和正常的请求一样,发送正常请求的请求头Request Headers,和请求体Request Body,只是不返回Response Body;

     -  Access-Control-Max-Age:缓存 **成功的** preflight的结果,
        同样的请求,缓存有效期内不再发起options请求!除非请求头request Headers
        或者请求体request Body信息改变;失败的 preflight 结果不会缓存;
        未设置Access-Control-Max-Age 相当于 Access-Control-Max-Age:0;
    

    5、分简单请求,非简单请求,如何区分,不赘述;GET请求在cache-control时效内,可以走缓存,不发起请求到服务器;

    • 浏览器添加 origin 请求头信息;
      • 5.1简单请求--成功
          Acess-Control-Allow-Origin(*时不能兼容客户端的 withCredentials = true)
          Acess-Control-Allow-Headers(不能为 *,要枚举)
        
      • 5.2非简单请求
      • 5.2.1 非简单请求--成功
        OPTIONS请求通过,或者在有效期内,即满足response Header中的
        Acess-Control-Allow-Origin、Acess-Control-Allow-Headers
        Acess-Control-Allow-Origin(‘*’时不能兼容客户端的 withCredentials = true)、
        Acess-Control-Allow-Headers(不能为 *,要枚举)         
        
      • 5.2.2 非简单请求--失败
          OPTIONS请求未通过,即不满足response Header中的 Acess-Control-Allow-Origin、Acess-Control-Allow-Headers,** 失败的OPTIONS请求不缓存** ;
          Acess-Control-Allow-Origin(‘*’时不能兼容客户端的 withCredentials = true)、
          Acess-Control-Allow-Headers(不能为 *,要枚举)           
        
      • 5.2.3 XHR跨域发送COOKIE(fetch设置参数即可)
         a.客户端 withCredentials = true;
         b.服务器端需要设置 Access-Control-Allow-Credentials :true;
         c.服务器端需要设置 Access-Control-Allow-Origin:`当前客户端域名,不能为‘*’`;
         d.服务器域下的cookie才会被发送(目前试验结果是只有通过服务器响应头去设置浏览器的服务器域cookie);

    相关文章

      网友评论

          本文标题:Cors深度探索结果

          本文链接:https://www.haomeiwen.com/subject/kntgnktx.html