--> -->
所々ではまるのでメモです。
Publicのオブジェクトにアクセスする際は、CORSを設定しないと Reason: CORS header 'Access-Control-Allow-Origin' missing エラーになってしまうのですが、CORSを全許可にアクセスしても、何故か最初のHEADリクエストだけはCORSエラーになります。私は404かそうじゃないかだけ知りたかったので、CORSエラーの場合はファイルが存在すると判断するようにして回避しました。バグ!?
さくらのオブジェクトストレージは、さくら内から使う分には安くて制限も無いのですが、さくら外(つまりpublicにしてブラウザ)からアクセスすると月間10万アクセスで無料枠を使い切るなど、意外と高コストになりかねません。そこで、元々借りているさくら内のサーバーにProxyを設定して、そこを経由して外部に公開するようにしたところ、パスは合っているのにAccessDeniedになるケースが出てきました。サーバーから telnet [server] 80 でアクセスして確認すると問題無いのに、です。
オブジェクトストレージ側には何のログも出ないので、サーバー側から出るパケットをキャプチャして確認してたところ、ヘッダに Authorization が含まれると、何らかの認証をしようとして(?)エラーとなることが分かりました。
というわけで、Proxyの設定(Apache)を以下のようにしたところ、正常にアクセスできるようになりました。
ProxyPass /s3 http://s3.isk01.sakurastorage.jp/[bucket名] <Proxy *> RequestHeader unset Authorization </Proxy>
今後も随時追記していきます。
オブジェクトのストレージ(違う)。 |