Amazon S3在PUT上出现501错误

Bre*_*ent 7 iphone amazon-s3 ios

在测试一个新应用程序时,一个测试人员总是将他上传到S3失败.我们向S3发送一个~1.2mb文件的PUT请求并设置它的ACL权限.对他来说,他总是得到501 - Not Implemented错误.

以下是请求中的标题:

"Accept-Encoding" = gzip; 
Authorization = "AWS ###:###";
"Content-Encoding" = gzip;
"Content-Length" = 1420267;
"Content-Type" = "application/octet-stream";
Date = "Thu, 6 Oct 2011 02:59:47 +0000";
"User-Agent" = "MyApp 1.0 (iPhone; iPhone OS 4.3.1; en_US)";
"x-amz-acl" = "public-read-write";
Run Code Online (Sandbox Code Playgroud)

以下是响应标头:

Connection = close;
"Content-Length" = 321;
"Content-Type" = "application/xml";
Date = "Thu, 06 Oct 2011 03:00:14 GMT";
Server = AmazonS3;
Run Code Online (Sandbox Code Playgroud)

欢迎任何想法!

响应返回状态代码501和字符串 - "您提供的标头意味着未实现的功能"

Alo*_*urg 7

如果未提供 Content-Length,则可能会发送来自 Amazon 的 501 响应代码。

既然您说的是,我建议通过代理(Mac 的Charles或Windows 的Fiddler)运行请求,并确保发送的请求实际上包含 Content-Length 标头


小智 5

响应正文包含XML,列出了它不满意的标题,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>NotImplemented</Code>
<Message>A header you provided implies functionality that is not implemented</Message>
<Header>If-Modified-Since</Header>
</Error>
Run Code Online (Sandbox Code Playgroud)

我将NSURLRequest上的缓存策略设置为NSURLRequestReloadIgnoringCacheData,并且它停止添加不需要的If-Modified-Since标头:

    mutableURLRequest = [[NSMutableURLRequest alloc] initWithURL:theURL];
    [mutableURLRequest setCachePolicy:NSURLRequestReloadIgnoringCacheData];
Run Code Online (Sandbox Code Playgroud)