在canvas中使用drawImage()绘制图像时,若传入未声明crossorigin属性的跨源元素,会使canvas变成污染状态(tainted),此时任何读取canvas数据的操作,如getImageData()、toDataURL()、toBlob()等,均会抛出错误(可理解为在img标签涉及到canvas时需使用crossOrigin='anonymous')。
Allowing cross-origin use of images and canvas - HTML: HyperText Markup Language | MDN
跨源相关机制综述(三):crossorigin属性 - 知乎
对于跨源的传统脚本(未声明type=module的脚本),若未声明crossorigin属性,在发生错误时,window.onerror中不会收到详细的错误信息,仅有类似“Script error”这样的简单提示。这样做是因为,即使是错误信息,也有可能暴露用户状态。
用于script或者link标签,赋值哈希,开启浏览器对获取的资源进行检查,用来进行检验加载的JavaScript文件或者CSS文件是否完整(可避免托管在CDN的资源被篡改而引入的XSS 风险)。