最近在项目上线之后遇到了oss上传403的问题,查看返回信息提示Policy失效:
这里有一下两种基本情况:
1:expiration设置过短,生成获取Policy的接口和上传接口响应时间太长导致Policy失效。
2:Policy使用不正确,上传接口和生成Policy接口两个Policy不一致
但是我这里expiration是30秒接口响应都在1s内,很明显不是expiration设置过短的问题。
排查上传接口的Policy和key以及Bucket等都是正确的,所以也不是第二种情况。
到这里我就纳闷了。这是为什么。
终于在我一次次请求接口的时候发现服务里的时间比网络时间慢一分钟。
可以发现接口响应时间是10:58:02,但此时网络时间都跑到10:59了
WTF?这一下就发现了问题所在。因为主机时间比网络时间慢了一分钟,导致Policy在服务器上生成的Policy是一分钟之前的了,我设置的expiration就只有30s,所以到了oss服务那边自然就过期了。
解决办法:将expiration的时间设置长一点,或者修改好服务器上的时间。
我这边是联系运维同学,将服务器上的时间和网络时间保持一致了。随后问题完美解决。