2014/05/14

Google Cloud StorageのバケットにCORSを設定する方法

別ドメインからアクセスするとAccess-Control-Allow-Originというエラーがでるので、それを回避するためにGCSのBucketにCross-Origin Resource Sharing(CORS)を設定する。

事前準備
gsutilが未インストールならGoogle Cloud SDKを突っ込んでおけばOK。

事前確認
設定されているCORSを確認する
$ gsutil cors get gs://BUCKET-NAME

STEP1: CORS.xmlを作る
ローカルにcors.xmlファイルをテキトウに作り、CORSの設定をcors.xmlに記入する。
<?xml version="1.0" encoding="UTF-8"?>
<CorsConfig>
  <Cors>
        <Origins>
            <Origin>http://*.adamrocker.com</Origin>
        </Origins>
        <Methods>
            <Method>GET</Method>
            <Method>POST</Method>
            <Method>HEAD</Method>
        </Methods>
        <ResponseHeaders>
            <ResponseHeader>*</ResponseHeader>
        </ResponseHeaders>
        <MaxAgeSec>86400</MaxAgeSec>
    </Cors>
</CorsConfig>
Originタグでアクセス元のURLを指定する。例えば「http://www.adamrocker.com」。
Methodタグは許可するHTTPメソッド。
MaxAgeSecはブラウザキャッシュの時間。

STEP2: CORSをGCSのバケットに設定する
$ gsutil cors set cors.xml gs://BUCKET-NAME
設定が上手くいっているか確認。
$ gsutil cors get gs://BUCKET-NAME