跨域问题:Canvas使用又拍云的图片后调用toDataURL()方法报错

新手上路,请多包涵

一个项目使用了Html5的Canvas画布标签,在canvas里加入本服务器的图片时能够很好得运行。但是当用了又拍云的图片后在高版本(28.0)的FireFox里可以运行,而在Chrome则报如下错误(IE下也不可运行):

Image from origin 'http://sdimage.b0.upaiyun.com' has been blocked from loading by Cross-Origin Resource Sharing policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access. 

经查阅资料是浏览器的同源策略问题,限制了Chrome的同源策略后就可以运行了。想问下又拍云里是否有提供JSONP的访问方式,或者针对这种情况要如何解决?

阅读 11.2k
5 个回答

试试下面这个方法是否有效:

var img = new Image();
img.crossOrigin = "anonymous";//增加该句代码

建议使用同域的后端(如 php)代理获取图片。

新手上路,请多包涵

请问这个问题又拍云官方有解决吗?就是在请求图片的返回头加载支持跨域的标识就可以。

新手上路,请多包涵

@贾三七
我添加了这些之后 依然会提示错误
而且是同一个错误提示,
不太明白跨域的问题,如果换了很多浏览器也不能实现,是不是就是所截取网页那边的问题?

换个服务器吧,我也遇到这个问题了,使用谷歌43版本的浏览器以及手机浏览器都会报跨域的错误,无法解决。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
又拍云问答
子站问答
访问
宣传栏