ErrorCode:AccessDenied,消息:AWS身份验证需要有效的Date或x-amz-date标头

pra*_*eep 6 xcode amazon-s3 amazon-web-services ios ios7

我的应用程序在ios 6中正常工作..它从亚马逊网络服务器s3上传和下载数据..但是当我将ios 6升级到ios 7时...我收到警告消息"无法连接到服务器"这个错误在日志中窗口

"Exception = AmazonServiceException {RequestId:5DC8AEF01DD9FB91,ErrorCode:AccessDenied,消息:AWS身份验证需要有效的日期或x-amz-date标头}".

为了解决这个问题,我将我的aws ios sdk 1.0.0升级为aws ios sdk 1.6.1.并尝试运行我的应用程序冻结10-12秒然后应用程序运行.

所以请任何人告诉我解决方案我如何删除aws ios sdk 1.0.0中的"x-amz-date header"问题及其在aws ios sdk 1.6.1中的替代冻结问题.

pet*_*son 0

我已向 Apple 提交了一份错误报告(以查明这是否是错误)。

与此同时,我创建了一个可怕的 hack,解决了 S3Request.m 中的 configureURLRequest 方法中的问题:

NSString *checkFormat =[self.date requestFormat];
if(![checkFormat hasSuffix:@":00"])
    checkFormat = [NSString stringWithFormat:@"%@:00",checkFormat];
[self.urlRequest setValue:checkFormat forHTTPHeaderField:kHttpHdrDate];
Run Code Online (Sandbox Code Playgroud)

这可能与您的 AWS 开发工具包版本不同。

从长远来看,我不会使用此修复程序 - 一旦 Apple 错误报告团队带回推荐的解决方案,我将在此处发布他们的任何回复

我还在这里发布了一个问题:https ://forums.aws.amazon.com/thread.jspa?threadID=135829#

编辑:在最新版本的工具包中,黑客是:

NSString *checkFormat =[self.date stringWithRFC822Format];
if(![checkFormat hasSuffix:@":00"])
    checkFormat = [NSString stringWithFormat:@"%@:00",checkFormat];
[self.urlRequest setValue:checkFormat forHTTPHeaderField:kHttpHdrDate];
Run Code Online (Sandbox Code Playgroud)