关于跨域的解决办法

  • 内容
  • 评论
  • 相关

很多人用createjs都会出现跨域问题,我这边统一回答一下。

Uncaught An error has occurred. This is most likely due to security restrictions on reading canvas pixel data with local or cross-domain images.

上面这个问题,如果你是双击文件运行报出的(只要地址前缀file:开头的都算),你只需要在环境中打开就可以,比如animateCC你可以选择用ctrl+enter打开,一些前端IDE自带环境的可以直接在IDE里用浏览器打开,什么都没有,你可以选择放到服务器上看。如果在服务器环境上也报这个问题,特别是点击的时候报的问题,你可以这么设置图片:

var hitArea = new createjs.Shape();
hitArea.graphics.beginFill("#000").drawRect(0,0,92,92);//这里是图片大小

bitmap.hitArea = hitArea;

凡是点击出的跨域问题上面的方法都能解决。

Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.

这个问题也是同样的,如果你是双击文件直接打开的(只要地址前缀file:开头的都算),放到环境中就好了,如果还没好,让后台设置一下跨域,后台怎么设置跨域?这个你得问你们公司的后端程序员。

No 'Access-Control-Allow-Origin' header is present on the requested resource. Originis therefore not allowed access

Access to XMLHttpRequest at 'file:xxxxx' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, isolated-app, chrome-extension, chrome, https, chrome-untrusted.

这2个错误只要你放弃使用xhr模式加载,也就是new createjs.LoadQueue(false);括号里面的参数传false就行了,如果一定要用xhr模式加载,那就只能需要服务器允许才可以跨域的,也就是需要你们后端设置。

但是声音加载默认就是需要用XHR,用an做项目的人很多都需要本地打开,那么这个坑必踩,解决办法:

createjs.Sound.registerPlugins([createjs.HTMLAudioPlugin]);//切换播放插件
loader.installPlugin(createjs.Sound);//如果是an这句是默认导出的

An error has occurred. This is most likely due to security restrictions on WebGL images with local or cross-domain origins

这个跨域很明显就是使用了stagegl跨的域,使用stagegl渲染非本地图片必须得到跨域允许,也就是还是需要后端设置。

其他的跨域

其他的跨域只要不是https跨域,和点击图片跨域,都可以让后台设置解决,后台解决不了就是你们公司后端的问题。

1542183776360437.jpg

评论

3条评论
  1. Gravatar 头像

    匿名 回复

    hitArea.graphics.beginFill("#000").drawRect(0,0,92,92);//这里是图片大小
    bitmap.hitArea = hitArea;
    可以的,可以解决精灵图无法点击触发事件的问题

  2. Gravatar 头像

    匿名 回复

    你是要饭的吗

  3. Gravatar 头像

    匿名 回复

    全废话

发表评论

电子邮件地址不会被公开。