如何用Python将HEAD HTTP请求发送到Amazon S3?

时间:2009-02-11 13:13:34

标签: http-headers amazon-s3 request amazon head

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

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

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

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

您可以查看服务器日志吗?这可能有助于解决这个问题......

我也不确定“HEAD”请求。你能不能使用“GET”或“POST”并自己提取标题?可能是“HEAD”没有被图书馆实现......我不确定 - 我通过快速谷歌搜索找到的文档非常不合适。

答案 2 :(得分:0)

403 HTTP代码意味着禁止。可能是站点管理员禁用了此方法。

尝试telnet

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

并注意服务器响应。

或者,您可以在python代码中使用conn.set_debuglevel(1)

相关问题