导出海报时图片元素没有被导出
广告
{{v.name}}
📋 原始需求(task.md):
edit.html在导出海报时图片元素没有被导出 Access to image at 'http://localhost:8030/uploads/064f504476594c4fb401783acff1d39d.png' from origin 'http://127.0.0.1:5500' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
edit.html在导出海报时图片元素没有被导出 Access to image at 'http://localhost:8030/uploads/064f504476594c4fb401783acff1d39d.png' from origin 'http://127.0.0.1:5500' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
问题分析
导出海报使用 html2canvas 时,图片来自 http://localhost:8030,而页面可能在 http://127.0.0.1:5500 等跨域源打开。静态资源未返回 Access-Control-Allow-Origin,画布被污染或图片被跳过,导出结果中看不到图片元素。
解决方案
1. 后端 CORSStaticFiles 为 /uploads、/posters 显式添加 Access-Control-Allow-Origin: *。 2. 前端导出改为 Canvas 自绘 renderPosterCanvas:用 fetch 拉取图片为 blob 再 drawImage,文字用 fillText,不依赖 html2canvas 跨域克隆。 3. img 标签增加 crossorigin="anonymous"。