使用cors从aws s3加载的Canvas元素和图像在前几次加载时不工作
Canvas element with and Image loaded from aws s3 using cors does not work first couple loads
所以我在我的AWS S3桶上设置了cors:
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
</CORSRule>
</CORSConfiguration>
在我的html
<div id="explain_canvas"></div>
在我的javascript中,我正在加载图像并将其放入画布图像中。
var outlineImage = new Image();
outlineImage.crossOrigin = '';
outlineImage.src = drawing_image;
outlineImage.onload = function() {
var canvasDiv = document.getElementById('explain_canvas');
var canvas = document.createElement('canvas');
canvas.setAttribute('width', 722);
canvas.setAttribute('height', 170);
canvas.setAttribute('id', 'canvas_'+canvas_element);
canvas.setAttribute('name', 'canvas_'+canvas_element);
canvasDiv.appendChild(canvas);
if(typeof G_vmlCanvasManager != 'undefined') {
canvas = G_vmlCanvasManager.initElement(canvas);
}
var context = canvas.getContext("2d");
context.drawImage(outlineImage, 10, 10, 600, 150);
}
我正在加载这样的上下文,以便与internet explorer兼容。
这是我的问题。当页面加载前两次时,会出现以下错误:Cross-origin image load denied by Cross-Origin Resource Sharing policy.
但是,当我重新加载页面几次时,它最终会工作并加载图像。一旦完成,我就可以成功地在canvas元素上调用toDataURL()。
有人知道为什么会这样吗?我错了吗?这是AWS的问题,我只能等亚马逊来解决问题吗?
这在我测试过的所有浏览器中都发生了。在Chrome, Firefox, Safari, IE中。在我的Mac, PC和iPhone上。所以我认为这与浏览器无关。此外,它在本地和生产中也会发生。
谢谢!
显然浏览器没有在请求头中发送origin头。法律要求发送原产地。我不确定为什么会这样。即使是一个简单的HTTP请求,也应该发送origin报头。唉,它不是。
相关文章:
- 加载器组件仅加载一次
- 当加载几个js文件时,defer属性应该如何工作
- 如何加载一次模型并将其存储到变量中
- Sencha Touch使用pageSize配置只加载几行
- angularJS,一个部分或模态通知,加载几秒钟后就会消失
- 每15天为新用户加载一次放大弹出菜单
- Jquery Ajax每隔1秒加载一次
- 每个用户/浏览器会话只加载一次Javascript
- 当audiojs加载两次时,audiojs进度条不工作
- 获取 window.location.reload 以在 Ionic 中仅加载一次
- 只加载一次js函数
- 用于单击页面上的按钮的Javascript,每隔几分钟就会加载一次
- 有没有办法阻止脚本加载两次?JavaScript
- Facebook喜欢的按钮只加载一次
- 如何每 30 秒加载一次页面的一部分
- 如何在用户滚动到页面底部时仅加载一次数据
- 为什么在 IIS7 中托管 MVC3 项目时,我的 AJAX 加载第一次失败
- 在同一页面中加载两次时需要JS冲突
- jquery:如何检测每隔几秒钟加载一次的元素
- 重新加载几次后,时间和日期消失