调用HTMLCanvasElement.toDataURL()是否会向服务器发起额外请求?
HTMLCanvasElement.toDataURL() 调用是否会发起额外服务端请求 结论非常明确:不会。
- 这个方法的所有逻辑都运行在浏览器本地,本质是把画布当前内存中存储的已渲染像素数据读取出来,在本地完成Base64编码后直接返回字符串结果,全程没有任何网络请求环节。
- 如果你往画布上绘制了未配置正确CORS头的跨域图片/视频资源,画布会被标记为污染状态,此时调用
toDataURL()会直接在本地触发安全策略拦截,抛出SecurityError错误,这个拦截是浏览器本地安全机制的行为,同样不会向服务器发送任何请求。 - 整个相关操作流程里,只有你最开始加载要绘制到画布上的外部图片、视频帧这类资源的时候,浏览器才会发起网络请求拉取资源,这些请求在资源加载阶段就已经执行完成,和后续调用
toDataURL()导出画布的操作没有关联。
常见误区:很多人会把跨域资源加载阶段发送的CORS预检请求、资源拉取请求算到
toDataURL()头上,实际上这些请求在你调用drawImage把资源绘制到画布上的时候就已经走完了,和画布导出操作无关。
内容的提问来源于stack exchange,提问作者mikm
相关产品推荐
相关产品推荐

