【发布时间】:2017-06-21 17:05:46
【问题描述】:
我正在构建一个应用程序,用户看到一组缩小的图像,然后按“确定”让应用程序下载所有原始文件,将它们放入一个 zip 文件并发送 zip 文件。
该应用正在使用 polymer、polymerfire、firebase(包括存储)。
在上传图片的过程中,我将原始文件和缩小文件的下载 url 和存储参考都保存在数据库中。
当我将下载 url 放在 iron-image 元素中以在浏览器中显示图像时,一切正常,缩小的图像显示在屏幕上。 当我尝试通过 XMLHttpRequest() 下载全尺寸图像时,出现 Cors 错误。 我不明白为什么,两个请求都来自同一个应用程序,为什么两个不同的 cors 响应?
这里是 XMLHttpRequest() 的代码(大部分是从 firebase 文档中复制的):
for (var z = 0; z < visita.immagini.length; z++) {
var immagine =visita.immagini[z]
var storage = firebase.storage();
var pathReference = storage.ref('immagini/'+ immagine.original.ref);
pathReference.getDownloadURL().then(function(url) {
var xhr = new XMLHttpRequest();
xhr.responseType = 'blob';
xhr.onload = function(event) {
var blob = xhr.response;
console.log(blob);
};
xhr.open('GET', url);
xhr.send();
}).catch(function(error) {
console.log(error);
});
}
这是错误响应:
XMLHttpRequest 无法加载 ***** [图片链接]******。不 请求中存在“Access-Control-Allow-Origin”标头 资源。因此不允许使用原点“http://localhost:3000” 访问。
请注意,如果我复制 ***** [image link]****** 并放入浏览器的另一个选项卡中,我可以毫无问题地看到。
【问题讨论】:
标签: javascript firebase cors xmlhttprequest firebase-storage