我想要在Amazon S3上获取文件的大小而无需下载它。我尝试尝试发送HTTP HEAD,并且返回的请求将包含内容长度HTTP标头。获取403禁止请求Amazon S3文件
这里是我的代码:
import httplib
import urllib
urlPATH = urllib.unquote("/ticket/fakefile.zip?AWSAccessKeyId=AKIAIX44POYZ6RD4KV2A&Expires=1495332764&Signature=swGAc7vqIkFbtrfXjTPmY3Jffew%3D")
conn = httplib.HTTPConnection("cptl.s3.amazonaws.com")
conn.request("HEAD", urlPATH, headers={'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
'Accept-Encoding': 'none',
'Accept-Language': 'en-US,en;q=0.8',
'Connection': 'keep-alive'}
)
res = conn.getresponse()
print res.status, res.reason
错误消息:
403 Forbidden
所以逃跑的 “%” 的URL,我用urllib.unquote后得到403禁止,我也试图尝试添加一些标题,因为我认为亚马逊可能只返回似乎被浏览器请求的文件,但我继续得到403错误。
这是亚马逊需要特定参数来正确处理HTTP请求或我的代码不好的情况吗?
你确定你需要额外的报价?即使没有这个也会返回403吗? – Scovetta
你指的是多少额外的引用? – Peter
对不起,拼写错误,我的意思是'urllib.unquote'。 – Scovetta