这是一个奇怪的问题。
我正在使用 Amazon S3 在我的 Silverlight 4 应用程序中存储文件。由于与 REST API 和 S3 相关的文件限制(对于 REST,文件必须小于 1mb),我试图让 SOAP 调用正常工作。
我按照蒂姆在这里写的教程http://timheuer.com/blog/archive/2008/07/05/access-amazon-s3-services-with-silverlight-2.aspx
减去关于 CNAME 的部分,因为他更新并说这样做对安全性很不利,但一直有连接问题,直到今天早上它才神奇地开始工作,我能够得到我所有存储桶的列表!所以我以为它已经修复了,直到几分钟前我重新启动 Chrome 然后再次尝试应用程序时,它不再连接到 SOAP 端点并且 VS 给了我跨域错误。
但是,我想到了我之前为使其正常工作所做的所有事情,我唯一能想到的就是我打开了一个选项卡,其中通过 bucket.s3.amazonaws.com/clientaccesspolicy 打开了 clientaccesspolicy.xml 文件。 xml。所以我尝试在新选项卡中再次打开它,在另一个选项卡中打开我的应用程序,然后 SOAP 调用开始工作!仅当文件在选项卡中打开时才有效!!!我也在 Firefox 和 IE 中尝试过,同样的事情!
我有 Fiddler,它似乎并没有真正调用过 clientaccesspolicy.xml,除非它隐藏在其中一个 SSL 调用中,然后无法分辨,但没有直接调用 .s3.amazonaws .com/clientaccesspolicy.xml 像这里所说的其他一些问题一样通过 Fiddler。
非常感谢这里的一些帮助,谢谢。
编辑:因为有人可能会要求它,这是我目前正在使用的 clientaccesspolicy.xml 文件。我知道这不是最安全的,只是想在我取出通配符之前让它工作
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-methods="*" http-request-headers="*">
<domain uri="http://*"/>
<domain uri="https://*"/>
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
编辑 2:这似乎是 HTTPS 的问题。如果我强制我的端点是 http,而不是 Amazon 要求的 https,Fiddle 会显示 SL 访问 clientaccesspolicy.xml 文件。