niklasvh / html2canvas

Screenshots with JavaScript
https://html2canvas.hertzen.com/
MIT License
30.58k stars 4.81k forks source link

cors 跨域 image不显示 #1879

Open w493189140 opened 5 years ago

w493189140 commented 5 years ago

已解决 解决方案 服务端加 Access-Control-Allow-Origin * 使用oss 本人alioss 跨域设置 配置好 暴露headers Etag x-oss-reques-id 图片文件设置Http头 Cache-Control 为no-cache

w493189140 commented 5 years ago

跨域原因是 图片被请求了两次,一次是图片直接返回 没有触发跨域 第二次是ajax请求是浏览器缓存 所以会出现跨域问题

yupeng2015 commented 5 years ago

跨域原因是 图片被请求了两次,一次是图片直接返回 没有触发跨域 第二次是ajax请求是浏览器缓存 所以会出现跨域问题

请问你是怎么解决的

langyuxiansheng commented 4 years ago

这个属性有时候不一定有效啊..

jianzhou520 commented 3 years ago

cache-control是在阿里云OSS设置的吗?

YangHeLi commented 3 years ago

跨域原因是 图片被请求了两次,一次是图片直接返回 没有触发跨域 第二次是ajax请求是浏览器缓存 所以会出现跨域问题

同问

dora-ljh commented 9 months ago

这个原因是oss同源不会返回 access-control-allow-origin,会影响到:在直接ajax请求图片时,如果有缓存的情况下,判断没有出现access-control-allow-origin,就会跨域 我想到了两种解决办法:

  1. 在阿里云OSS中配置单个资源的header不缓存,也就是把 cache-control 设置为 no-cache.(这也是我目前使用的方法)。但是会导致资源没办法缓存,如果是大批量的并不适用
  2. 先用ajax请求一次资源图片。既然浏览器请求资源被认为同源不会返回 access-control-allow-origin,那就使用ajax主动触发一次请求资源,这样的话Origin为当前网站的域名地址,oss就会返回 access-control-allow-origin,后续再发送同样的资源请求的情况下就不会被认为跨域