2013-08-29 30 views
3

我最近实现了Fine Uploader,并且它已经大部分成功。但是一些用户无法上传。他们都使用现代浏览器(IE10,FF和Chrome)。一个让我远程访问他们的机器,我可以在Chrome和FF上试用它。Fine Uploader将“Policy过期”消息发送到S3的某些

我得到了两个同样的错误:

[10:45:28.330] "[FineUploader 3.8.0] Received response status 403 with body: <?xml version="1.0" encoding="UTF-8"?> 
<Error><Code>AccessDenied</Code><Message>Invalid according to Policy: Policy expired.</Message><RequestId>--removed--</RequestId><HostId>--removed--</HostId></Error>" 

有什么事情与他们的计算机上的时区设置,在那里它产生无效的策略?

回答

4

由于时间是UTC,时区设置将不起作用。但是,如果用户计算机上的时间不准确(比如5分钟或更长时间),那么该策略将会过期。

Fine Uploader将到期日期设置为5分钟(再次以UTC表示)。使用的日期在浏览器中生成,因此您的客户机时间将被使用。如果客户端计算机的时钟速度降低5分钟或更长时间,则亚马逊处理该策略时,该策略将被视为过期。

我相当确信这个问题是由于客户的机器时钟有明显的漂移。如果您验证了这一点,我建议您指示他们保持系统时钟与时间服务器同步。

更新:Fine Uploader 5.5增加了一项新功能,可以让您克服用户机器/浏览器上的极端时钟漂移。有关更多信息,请参阅clock drift section on the S3 feature page

+0

谢谢。我已经为明天的问题设置了远程访问另一位客户,然后会确认。快速的时钟是重要还是慢? 5分钟的东西可以在任何地方配置吗? –

+0

在这种特殊情况下,快速时钟不会导致亚马逊出现任何错误。目前,到期日期不可配置。离正确时间5分钟或更短的时钟是不寻常的,应该真正解决。我可以看到为什么你可能想简单地增加用于补偿5-10分钟的时钟的到期日期,但是关于1小时关闭或者1天休息等等的时钟呢?我认为日期可以设定在将来30年后的某个日子,但是我觉得5分钟是合理和安全的到期日期。 –

+0

电脑出现问题的人向我保释,所以我无法确认时间是否是问题所在。任何想过在服务器上设置过期时间作为签名请求的一部分?这样你就不必担心用户有时间问题。 –