Stockage Firebase et contrôle D'accès-Autoriser-origine

J'essaie de télécharger des fichiers à partir du stockage Firebase via un XMLHttpRequest, mais Access-Control-Allow-Origin n'est pas défini sur la ressource, ce n'est donc pas possible. Est-il possible de mettre cet en-tête sur le serveur de stockage?

  (let [xhr (js/XMLHttpRequest.)]
    (.open xhr "GET" url)
    (aset xhr "responseType" "arraybuffer")
    (aset xhr "onload" #(js/console.log "bin" (.-response xhr)))
    (.send xhr)))

Message D'erreur Chrome:

XMLHttpRequest ne peut pas charger https://firebasestorage.googleapis.com/[édité] Aucun en-tête' Access-Control-Allow-Origin ' n'est présent sur la requête ressources. Origine 'http://localhost:3449' est par conséquent pas autorisé accès.

38
demandé sur Mike McDonald 2016-06-11 09:29:03

2 réponses

De ce post sur le groupe/liste firebase-talk:

La façon la plus simple de configurer vos données pour CORS est avec l'outil de ligne de commande gsutil. Les instructions d'installation de gsutil sont disponibles à https://cloud.google.com/storage/docs/gsutil_install . Une fois que vous avez installé gsutil et authentifié avec lui, vous pouvez l'utiliser pour configurer CORS.

Par exemple, si vous souhaitez simplement autoriser les téléchargements d'objets à partir de votre domaine personnalisé, mettez ces données dans un fichier nommé la scro.json (remplacement de "https://example.com" par votre domaine):

[
  {
    "origin": ["https://example.com"],
    "method": ["GET"],
    "maxAgeSeconds": 3600
  }
]

Ensuite, exécutez cette commande (en remplaçant "exampleproject.appspot.com" par le nom de votre compartiment):

gsutil cors set cors.json gs://exampleproject.appspot.com

Et vous devriez être réglé.

Si vous avez besoin d'une configuration CORS plus compliquée, consultez les documents à https://cloud.google.com/storage/docs/cross-origin#Configuring-CORS-on-a-Bucket .

69
répondu Frank van Puffelen 2016-09-08 22:09:01

Je veux juste ajouter à la réponse. Il suffit d'aller à votre projet dans google console (console.cloud.google.com/home) et sélectionnez votre projet. Là, ouvrez le terminal et créez simplement le cors.fichier json (touch cors.json), puis suivez la réponse et éditez ce fichier (vim cors.json) comme suggéré par @ frank-van-puffelen

Cela a fonctionné pour moi. À votre santé!

0
répondu Aakash 2018-07-12 11:54:25