2013-08-28 216 views
0

这使我整夜都在疯狂。Amazon S3存储桶策略权限不允许Dropbox API从存储桶中提取文件

我在PHP/MYSQL中编写了一个完美工作的DropBox应用程序,它从Amazon S3存储桶中提取文件并将它们发送给用户Dropbox文件夹。

然后,我改变在亚马逊S3桶斗策略,以允许文件从仅引荐的少数被拉动,并签署URLS(例如:/musicfile.mp3?AWSAccessKeyId=[accesskeyid] &过期= [到期] &签名= [签名])。

这适用于所有用途,除了我了解到我的Dropbox功能不再有效以外,这是因为您将Dropbox API传递给Amazon S3上的mp3的URL,并且在Dropbox的一侧它们将文件拉入,所以现在我有桶政策只允许某些推荐人,Dropbox获得权限被拒绝,API告诉我它失败。

所以我认为简单的修复,我只是简单地添加?AWSAccessKeyId =等等等文件传递到Dropbox的结尾,所有将立即工作,但它并不是因为该文件然后没有结束在扩展Dropbox识别,所以它再次失败。

然后我想我只是简单地将Dropbox的引用链接添加到我的存储桶策略中,但我仍然不知道它是什么,并且添加了dropbox.com和api.dropbox的所有变种,没有运气。

如果有人有任何想法或解决方案,你会认真做我的一周。

我想要做的绝对最后一件事是被迫首先下载文件到我的服务器,然后发送到Dropbox,我真的不想这样做,我知道我已经完美的工作,因为它已经是,当我完全删除我的存储桶策略时,它会立即生效,我只是希望它能与它一起工作。

回答

1

我认为,因为您提到将URL传递给Dropbox,您使用的是the Saver?如果是这样,你可以告诉Saver使用哪个文件名,所以给它授权的URL并指定一个文件名,这样就有一个文件扩展名。例如:

<a href="https://...?AWSAccessKeyId=..." class="dropbox-saver" data-filename="myfile.txt"></a> 

,或者在JavaScript:

Dropbox.save('https://...?AWSACcessKeyId=...', 'myfile.txt'); 

当你说“因为该文件,然后在扩展并没有结束Dropbox的认识,从而再次失败的工作,”你是什么是什么意思?文件没有扩展名时出了什么问题?

0

当所有其他操作失败时...检查日志。

Turn on logging for your bucket,运行一些测试,等待几分钟以显示日志,然后检查日志以查看引用者是什么。似乎可以肯定的是,不会有引用者,因为不是Web浏览器的用户代理(如Dropbox的后端进程)通常没有理由发送引用者。

如果有任何安慰,通过约束引用者来“保护”桶就好像根本不保护桶。这是非常简单的失败,所以它只是针对两类人真正有效的保护:

  • 老实人
  • 懒人

http://en.wikipedia.org/wiki/Referer_spoofing

相关问题