2

我正在尝试使用 Python 从 S3 资源中检索 HTTP HEAD 信息。不幸的是,响应总是返回 403 错误。我正在使用 此处建议的代码,但不幸的是这不适用于 S3 请求。这是代码(省略了主机和密钥详细信息):

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

该请求还发送一个签名过期作为查询字符串的一部分。

我也尝试过使用 httplib2,但 HEAD REQUEST 只是挂起。

4

3 回答 3

2

如果您使用的是签名 URL,则 URL 由方法(例如 HEAD 或 GET)签名。因此,每种方法都需要不同的 URL。

于 2013-12-16T21:33:54.530 回答
0

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 代码中使用。

于 2009-10-18T10:16:23.880 回答
0

403 告诉您发送的请求是有效的(是否正确是另一回事),但由于某种原因您无权访问请求的页面。至少您知道正在发送一个有效的 HTTP 请求。

您可以检查服务器日志吗?这可能有助于阐明问题...

我也不确定“HEAD”请求。你能不使用“GET”或“POST”并自己提取标题吗?可能是库没有实现“HEAD”......我不确定 - 我通过快速谷歌搜索能够找到的文档严重不足。

于 2009-02-11T13:22:14.537 回答