2017-06-19 15 views
1

ボタンクリックイベントでFirebaseストレージからファイルをダウンロードしようとしていますが、アクセス制御許可の元になりました。gs:// <your-cloud-storage-bucket>にはCORS設定がありません

https://firebase.google.com/docs/storage/web/download-files

私はCORSを設定しようとしています上記のリンクを1として。私はgsutilコマンドラインツールをインストールしました。しかし、私はその後、gsutil cors get gs://<your-cloud-storage-bucket>/ has no CORS configurationを返すコマンドgsutil cors get gs://<your-cloud-storage-bucket>を使用し、私はこのコード

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

をコピーする必要がcors.jsonファイルを見つけることができません。

まず、ストレージバケットのCORS設定ファイルを作成する必要がありますか?

以下は、私のボタンをクリックする方法です。エラーがコードに含まれている場合。

downloadAttachment(fileName) { 
var uid = AuthService.uid; 
let storageRef = firebase.storage().ref().child('assignments/' + uid + '/' + fileName); 
storageRef.getDownloadURL().then(url => { 
    console.log(url); 
    var xhr = new XMLHttpRequest(); 
    xhr.responseType = 'blob'; 
    xhr.onload = function (event) { 
    var blob = xhr.response; 
    }; 
    xhr.open('GET', url); 
    xhr.send(); 
}); 
} 

エラー:

いいえ「アクセス制御 - 許可 - 起源」ヘッダは、要求されたリソース上に存在します。 Origin 'http://localhost:4200'はアクセスできません。

ありがとうございます。

答えて

1

はい、あなたが望む-呼び出すしたい - と、それにお好みのCORSのコンフィグ設定を入れ、その後、このようにそれにgsutilを実行する場合、それcors.json何という名前のファイルを作成:

gsutil cors set cors.json gs://<your-cloud-storage-bucket>/ 

アップロードしますこれらのCORS設定をバケットに設定してから、その後にいつでもgsutil cors get gs://<your-cloud-storage-bucket>を使用して現在の設定を取得できます。

+0

この 'cors.json'ファイルはどこに保存しますか? – PR7

+0

cors.jsonファイルは、gsutilを呼び出した後はどこにでも保存する必要はありません。必要に応じて、PCのホームディレクトリなど、必要な場所に保存できます。しかし、いったん "gsutil cors set"を初めて実行すると、それ以降はいつでも 'gsutil cors get'で現在のCORS設定を取得できます。だから、後で設定を変更したり、後でもう一度追加したいのであれば、 'gsutil cors get'の出力を新しいファイルにコピーして変更を追加し、その新しいファイルに 'gsutil cors set'を呼び出すことができます。 – sideshowbarker

+0

私は 'gsutil cors set cors-json-file C:¥Users¥Prashant¥AppData¥Local¥Google¥Cloud SDK¥cors.json'コマンドを使用しました。それは 'CommandExceptionを返します:" cors "コマンドは" file:// "URLをサポートしません。 'gs:// URLを使用しましたか? ' – PR7

関連する問題