Amazon s3 CEPH&x2B;s3javasdk+;预签认沽权证+;CORS=失败
我正在寻找一个神奇的公式来让CEPH+S3JavaSDK+预签名PUT url+CORS工作。我们可以创建一个bucket,然后将CORS配置应用于该bucket。然后,我们可以创建一个预生成的PUT url,然后将其发送回客户端。但是,CORS飞行前(选项)请求失败,返回403 针对AWS,同样的代码非常有效。然而,Swift和Ceph均未能满足403的选项请求。由于选项失败,CORS也会失败。我们发现(我们认为)RADOSGW在创建auth头的过程中可能存在缺陷……它与amazon SDK使用的签名过程不匹配。例如:Amazon s3 CEPH&x2B;s3javasdk+;预签认沽权证+;CORS=失败,amazon-s3,cors,openstack-swift,ceph,radosgw,Amazon S3,Cors,Openstack Swift,Ceph,Radosgw,我正在寻找一个神奇的公式来让CEPH+S3JavaSDK+预签名PUT url+CORS工作。我们可以创建一个bucket,然后将CORS配置应用于该bucket。然后,我们可以创建一个预生成的PUT url,然后将其发送回客户端。但是,CORS飞行前(选项)请求失败,返回403 针对AWS,同样的代码非常有效。然而,Swift和Ceph均未能满足403的选项请求。由于选项失败,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
我们可以处理缺少的内容类型和其他元数据字段,但请注意,该方法是完全错误的。我认为RADOSGW应该使用“访问控制请求方法”作为签名中的方法…而不是用于飞行前请求的实际选项方法
有人能让这个组合起作用吗 我们最终在Ceph RGW库中记录了一个bug