Загрузка файла в хранилище firebase возвращает ошибку 403, несмотря на изменение правил базы данных - PullRequest
0 голосов
/ 07 апреля 2020

Я создаю основную c веб-страницу, используя HTML и JS для загрузки GIF-файлов в хранилище Firebase.

Вот мой код:

<!DOCTYPE html>
<html lang="en">
    <head>
    <meta charset="UTF-8" />
    <title>Upload gifs</title>
  </head>
  <body>
    <progress value="0" max="100" id="uploader">0%</progress>
    <input type="file" valu="upload" id="fileButton"></input>

  </body>
    <script src="https://www.gstatic.com/firebasejs/7.7.0/firebase-app.js"></script>
    <script src="https://www.gstatic.com/firebasejs/7.7.0/firebase-storage.js"></script>

    <script>
        var firebaseConfig = {
          apiKey: "",
          authDomain: "",
          databaseURL: "",
          projectId: "",
          storageBucket: "",
          messagingSenderId: "",
          appId: "",
          measurementId: ""
        };
    firebase.initializeApp(firebaseConfig);
    console.log(firebase);

    var uploader = document.getElementById('uploader');
    var fileButton = document.getElementById('fileButton');

    fileButton.addEventListener('change', function(e){
      var file = e.target.files[0];

      var storageRef = firebase.storage().ref('gifs/' + "123");

      storageRef.put(file);

      task.on('state_changed', 
        function progress(snapshot) {
            var percentage = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
            uploader.value = percentage;
        }
        ,
        function error(err) {

        }

      )
  })

    </script>
</html>

Мой правила для моей базы данных firebase:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {

    match /{document=**} {
      allow read, write: if true;
    }
  }
}

Несмотря на это, когда я запускаю код, он возвращает ошибку 403, говоря, что это запрещено. Я не уверен, почему, поскольку правила были изменены, чтобы разрешить доступ к базе данных, но у меня все еще есть проблема. Буду благодарен за любую помощь.

1 Ответ

1 голос
/ 07 апреля 2020

Вы смешиваете правила безопасности Cloud Firestore , одной из служб баз данных, предлагаемых Firebase, с правилами для Cloud Storage .

. Вы будете документацию по правилам безопасности облачного хранилища можно найти здесь: https://firebase.google.com/docs/storage/security

В вашем случае, поскольку из вашего вопроса следует, что вы хотите разрешить кому-либо читать и писать, вы должны написать свой Облачное хранилище правил следующим образом:

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write;
    }
  }
}
...