Невозможно загрузить файл из хранилища Firebase после настройки политики CORS - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть документ в Firebase, который я хотел бы загрузить из моего веб-приложения. В моем приложении есть функция create(), которая используется для загрузки и обработки документа: функция выглядит следующим образом:

create(){
  var storageRef = storage.ref()
  storageRef.child('master_doc/master.docx').getDownloadURL().then(function(url) {
    // `url` is the download URL for 'images/stars.jpg'

    // This can be downloaded directly:
    var xhr = new XMLHttpRequest();
    xhr.responseType = 'blob';
    xhr.onload = function() {
      var blob = xhr.response;
      console.log("blob"+blob);
    };
    xhr.open('GET', url);
    xhr.send();

    // Or inserted into an <img> element:
    var img = document.getElementById('myimg');
    img.src = url;
  }).catch(function(err) {
    // Handle any errors
    console.log(err.message);
  });  
}

Эта функция вызывается при нажатии кнопки. Когда я нажимаю кнопку, файл загружается. Но вместо заголовка документа загружается информация, которая выглядит следующим образом:

   {
  "name": "master_doc/master.docx",
  "bucket": "ut-financial.appspot.com",
  "generation": "1587569473372983",
  "metageneration": "1",
  "contentType": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
  "timeCreated": "2020-04-22T15:31:13.372Z",
  "updated": "2020-04-22T15:31:13.372Z",
  "storageClass": "STANDARD",
  "size": "48007",
  "md5Hash": "rQKxDlXPOVGNtM2qilIH/Q==",
  "contentEncoding": "identity",
  "contentDisposition": "inline; filename*=utf-8''master.docx",
  "crc32c": "pZH0cg==",
  "etag": "CLeGkZSt/OgCEAE=",
  "downloadTokens": "b894d66e-e06b-4d5e-8139-273e0fe322e5"
}

И в консоли появляется сообщение об ошибке:

Доступ к XMLHttpRequest на 'http://127.0.0.1:9614/204' (перенаправлено с 'https://firebasestorage.googleapis.com/v0/b/ut-financial.appspot.com/o/master_doc%2Fmaster.docx') из источника 'http://localhost:8080' заблокировано политикой CORS: Ответ на предпечатный запрос не проходит проверку контроля доступа: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin».

Я установил CORS как для моего локального терминала, так и для облачной оболочки Google с JSON, указанным в документации:

[
  {
    "origin": ["*"],
    "method": ["GET"],
    "maxAgeSeconds": 3600,
  }
]

Я попытался добавить заголовок

"Access-Control-Allow-Origin": "http://localhost:8080/"

, чтобы указать мой локальный адрес, но он все равно не работает. Любая помощь будет оценена. Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...