非常混乱的Silverlight、Amazon S3和clientaccesspolicy.xml问题
这是一个奇怪的问题 我正在使用AmazonS3在Silverlight4应用程序中存储文件。由于与RESTAPI和S3文件相关的文件限制,REST文件必须小于1mb,因此我正在尝试让SOAP调用正常工作 我在这里遵循了Tim编写的教程 减去CNAME的部分,因为他更新了CNAME并说这样做不利于安全, 但一直存在连接问题,直到今天早上它神奇地开始工作,我才能够得到我所有水桶的列表!所以我认为它是固定的,直到几分钟前,当我重新启动Chrome,然后再次尝试应用程序时,它不再连接到SOAP端点,VS给了我跨域错误 然而,我想到了我之前为让它工作所做的所有事情,我唯一能想到的是我打开了一个选项卡,其中clientaccesspolicy.xml文件通过bucket.s3.amazonaws.com/clientaccesspolicy.xml打开。因此,我尝试在一个新选项卡中再次打开它,在另一个选项卡中打开我的应用程序,然后SOAP调用开始工作!只有在选项卡中打开文件时,它才起作用!!!我也在Firefox和IE上试用过,同样的东西 我有一个Fiddler,它似乎从来没有真正调用clientaccesspolicy.xml,除非它隐藏在一个SSL调用中,然后就没有办法知道了,但是没有像其他一些问题所说的那样通过Fiddler直接调用.s3.amazonaws.com/clientaccesspolicy.xml 非常感谢大家的帮助,谢谢 编辑: 因为有人可能会要求它,所以这是我当前使用的clientaccesspolicy.xml文件。我知道这不是最安全的,只是在我取出通配符之前试着让它工作非常混乱的Silverlight、Amazon S3和clientaccesspolicy.xml问题,silverlight,amazon-s3,clientaccesspolicy.xml,Silverlight,Amazon S3,Clientaccesspolicy.xml,这是一个奇怪的问题 我正在使用AmazonS3在Silverlight4应用程序中存储文件。由于与RESTAPI和S3文件相关的文件限制,REST文件必须小于1mb,因此我正在尝试让SOAP调用正常工作 我在这里遵循了Tim编写的教程 减去CNAME的部分,因为他更新了CNAME并说这样做不利于安全, 但一直存在连接问题,直到今天早上它神奇地开始工作,我才能够得到我所有水桶的列表!所以我认为它是固定的,直到几分钟前,当我重新启动Chrome,然后再次尝试应用程序时,它不再连接到SOAP端点,VS
<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:
这似乎是一个问题。如果我强制我的端点为http,而不是Amazon要求的https,Fiddle会显示SL访问clientaccesspolicy.xml文件 当您在另一个选项卡中打开clientaccesspolicy.xml文件时,我猜您正在传递一些允许您访问它的凭据。这将设置一个cookie,Silverlight也可以使用它访问clientaccesspolicy.xml文件。当你关闭浏览器时,你就失去了cookie,从而失去了对文件的访问权。所以我找到了答案 第一个问题是,如果我打开它,为什么它会起作用,这不是因为cookie是按说设置的,而是通过https访问它让我接受了amazon的SSL安全策略 第二个问题,我不应该接受。amazon使用的SSL通配符*.s3.amazonaws.com与其中包含句点的存储桶不匹配。所以,当我遵循蒂姆的教程时,我把我所有的水桶都做成了这样 bucketname.domain.com 当我试图通过SOAP和后来的https访问它时,它不起作用,因为通配符不匹配。把我所有的水桶都改成不包含水桶,效果很好
还应该注意,Tim的教程不再有效,因为他正在使用http,今年6月,Amazon通过https强制进行SOAP调用,因此http调用不再有效。我得到了这么多,但它并没有解决SL4无法访问clientaccesspolicy.xml文件的真正问题。我将添加一个编辑,如果我强制端点指向http而不是amazon要求的https,fiddler确实会显示它访问该文件,因此它似乎只是https问题。您在这里查看了答案吗?