Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 CEPH&x2B;s3javasdk+;预签认沽权证+;CORS=失败_Amazon S3_Cors_Openstack Swift_Ceph_Radosgw - Fatal编程技术网

Amazon s3 CEPH&x2B;s3javasdk+;预签认沽权证+;CORS=失败

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使

我正在寻找一个神奇的公式来让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