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