Как отправить HEAD HTTP-запрос в Python на Amazon S3? - PullRequest
1 голос
/ 11 февраля 2009

Я пытаюсь получить информацию HTTP HEAD из ресурса S3, используя Python. К сожалению, ответ всегда возвращает ошибку 403. Я использую код, который был предложен здесь но, к сожалению, это не работает для запросов S3. Вот код (данные хоста и ключа опущены):

>>> import httplib
>>> conn = httplib.HTTPConnection("www.mybucket.us")
>>> conn.request("HEAD", "/mykey?myparamterers")
>>> res = conn.getresponse()
>>> res.status
>>> 403

Запрос также отправляет подписанный срок действия как часть строки запроса.

Я также пытался использовать httplib2, но ЗАПРОС ГОЛОВКИ просто зависает.

Ответы [ 3 ]

2 голосов
/ 17 декабря 2013

Если вы используете подписанный URL-адрес, URL-адрес подписывается методом (например, HEAD или GET). Поэтому для каждого метода вам потребуется отдельный URL.

0 голосов
/ 18 октября 2009

403 HTTP-код означает, что запрещено. Возможно, администратор сайта отключил этот метод.

попробуй телнет

telnet www.mybucket.us 80
HEAD http://www.mybucket.us/mykey?myparamterers
Host: www.mybucket.us
<ENTER>
<ENTER>

и следите за ответом сервера.

В качестве альтернативы, вы можете использовать conn.set_debuglevel(1) в коде Python.

0 голосов
/ 11 февраля 2009

403 сообщает, что отправленный запрос был действительным (был ли он правильным, это другая история), но по какой-то причине у вас нет разрешения на доступ к запрашиваемой странице По крайней мере, вы знаете, что отправляется действительный HTTP-запрос.

Можете ли вы вообще проверить журнал сервера? Это может помочь пролить свет на проблему ...

Я тоже не уверен насчет запроса "HEAD". Разве вы не можете использовать «GET» или «POST» и извлечь заголовок самостоятельно? Возможно, библиотека "HEAD" не реализована ... Я не уверен - документация, которую я смог найти с помощью быстрого поиска, крайне неадекватна.

...