CEPH + S3 Java SDK + 署名付き PUT URL + CORS を機能させるための魔法の公式を探しています。バケットを作成し、CORS 構成をバケットに適用できます。その後、事前に生成された PUT URL を作成して、クライアントに送り返すことができます。ただし、CORS プリフライト (オプション) 要求は 403 で失敗します。
AWS に対しては、この同じコードがうまく機能します。ただし、Swift と Ceph の両方が 403 で OPTIONS 要求に失敗します。OPTIONS が失敗するため、CORS は失敗します。RADOSGW の auth ヘッダーの作成方法に問題がある可能性があることを突き止めました (私たちはそう考えています)。これは、Amazon SDK で使用される署名プロセスと一致しません。例えば:
AWS Java auth hdr that gets signed:
PUT
image/jpeg
1404252781
x-amz-meta-origfile:Desert.jpg
/virbsupport/78946140-4638-4338-b765-6f701c453a89?response-content-disposition=attachment; filename=Desert.jpg
In Ceph:
OPTIONS
1404252781
/virbsupport/78946140-4638-4338-b765-6f701c453a89?response-content-disposition=attachment; filename=Desert.jpg
コンテンツ タイプと追加のメタデータ フィールドが欠落していても作業できますが、METHOD が完全に間違っていることに気付きます。RADOSGWは、署名のメソッドとして「Access-Control-Request-Method」を使用する必要があると思います...プリフライトリクエストに使用されている実際のOPTIONSメソッドではありません。
この組み合わせを機能させることができた人はいますか?