Cors深度探索结果

【原创】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);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容