script crossorigin和integrity 属性

1、script标签 crossorigin 属性

script标签去请求资源的时候,request是没有origin头的。
script标签请求跨域资源的时候,内部运行如果报错的话,window.onerror 捕获的时候,内部的error.message只能看到Script error.看不到完整的错误内容。这个应该是浏览器的安全策略。

window.addEventListener('error', function(msg, url, lineno, colno, error) {
    console.log('error catch:', msg.message);
    return false
})

设置 crossorigin属性后
①、script标签去请求资源的时候,request会带上origin头,然后会要求服务器进行 cors校验,跨域的时候如果response header 没有 ‘Access-Control-Allow-Origin’ 是不会拿到资源的。cors验证通过后,拿到的script运行内部报错的话,window.onerror 捕获的时候,内部的error.message可以看到完整的错误信息。
crossorigin的属性值分为 anonymous和use-credentials。如果设置了crossorigin属性,但是属性值不正确的话,默认是anonymous。
②、anonymous代表同域会带上cookie,跨域则不带上cookie,相当于 fecth请求的credentials: 'same-origin'。
③、use-credentials跨域也会带上cookie,相当于fetch请求的 credentials: 'include',这种情况下跨域的response header 需要设置'Access-Control-Allow-Credentials' = true,否则cors失败。

2、integrity安全验证

引入远程文件存在一个问题,如果对应的文件被篡改了,那么可能会对用户造成影响。虽然cdn一般都是可靠的,但是不排除受到黑客的攻击。
integrity属性设置引入js文件的hash值,浏览器在下载js文件时候,会对js文件进行hash计算,如果一致则正常加载,否则拒绝加载运行。
生成hash值的工具地址

    integrity="sha384-*****"
    src="https://cdn.xxx.xx/js/index.js"></script>
总结

①、设置了crossorigin就相当于开启了cors校验。
②、开启cors校验之后,跨域的script资源在运行出错的时候,window.onerror可以捕获到完整的错误信息。
③、crossorigin=use-credentials可以跨域带上cookie。
④、integrity可以做远程文件安全验证

参考文章

https://juejin.cn/post/6969825311361859598

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

相关阅读更多精彩内容

  • 1. 同源策略 如果两个页面的协议,端口和域名都相同,则两个页面具有相同的源(origin)。 The same-...
    何幻阅读 29,010评论 0 13
  • 前端开发应该都知道 HTML 中 标签的作用——引入 JS 代码,不过由于脚手架和打包工具的普及,我想很少有人...
    anOnion阅读 5,757评论 2 6
  • 动态导入script JavaScript 代码: 上面的方法动态加载js资源,注意,默认 append 到文档中...
    bounsail阅读 368评论 0 0
  • 前言: 这一片小文是说明header之中的常用标签以及相关的JS的使用的内容。 正文: 1、meta标签:定义当前...
    ArvinH阅读 1,737评论 0 1
  • 1. ajax请求获取response中的content-length 前提条件: 请求是跨域请求 现象: 通过...
    jdkwky阅读 778评论 0 0

友情链接更多精彩内容