我想要在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