Amazon S3 Получение 501 Ошибка на PUT - PullRequest
6 голосов
/ 06 октября 2011

При тестировании нового приложения у одного тестировщика всегда возникают ошибки при загрузке на S3.Мы отправляем запрос PUT файла размером ~ 1,2 Мб на S3 и устанавливаем его права доступа ACL.За него он всегда получает ошибку 501 - Не реализовано.

Вот его заголовки по запросу:

"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";

Вот заголовки ответа:

Connection = close;
"Content-Length" = 321;
"Content-Type" = "application/xml";
Date = "Thu, 06 Oct 2011 03:00:14 GMT";
Server = AmazonS3;

Любые мысли приветствуются!

Ответвозвращается с кодом состояния 501 и строкой - «предоставленный вами заголовок подразумевает не реализованную функциональность»

Ответы [ 4 ]

5 голосов
/ 25 февраля 2015

Тело ответа содержит 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>

Я установил политику кэширования в своем NSURLRequest равным NSURLRequestReloadIgnoringCacheData, и он прекратил добавлять нежелательный заголовок If-Modified-Since:

    mutableURLRequest = [[NSMutableURLRequest alloc] initWithURL:theURL];
    [mutableURLRequest setCachePolicy:NSURLRequestReloadIgnoringCacheData];
3 голосов
/ 08 октября 2014

Некоторое обновление по этой теме, так как я сам искал ответы.Похоже, это довольно общее сообщение об ошибке с более чем одной возможной причиной.

Для javascript api, 24 декабря 2012 года было исправление ошибки для пустого тела:

В последнее время в IOS 8 возникают проблемы с агрессивным (и нестандартным) кэшированием, которое Amazon не любит.Если ранее был какой-либо объект GetObject, заголовок If-Modified-Since отправляется для последующих запросов для того же объекта / url, даже для запросов PUT:

3 голосов
/ 01 августа 2012

501 код ответа от Amazon может быть отправлен, если не указан Content-Length.

Поскольку вы говорите, что это так, я предлагаю выполнить запрос через прокси ( Charles дляMac или Fiddler для Windows) и убедитесь, что отправляемый запрос действительно содержит заголовок Content-Length

0 голосов
/ 22 января 2015

У меня была эта проблема в Perl с CPAN Net :: Amazon :: S3 :: Client. Я изучил запрос и ответ и собрал воедино проблему, заключающуюся в том, что у меня не было возможности запрашивать через HTTPS. Я исправил это, установив LWP :: Protocol :: https.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...