我已經閱讀了幾個關于在 bash 中檢查 URL 是否存在的主題,例如#37345831,推薦的解決方案是使用wgetwith --spider。但是,--spider當與 AWS S3 預簽名 URL 一起使用時,該選項似乎會失敗。
來電:
wget -S --spider "${URL}" 2>&1
結果是:
HTTP request sent, awaiting response...
HTTP/1.1 403 Forbidden
x-amz-request-id: [REF]
x-amz-id-2: [REF]
Content-Type: application/xml
Date: [DATE]
Server: AmazonS3
Remote file does not exist -- broken link!!!
HTTP/1.1 200 OK而對于相同的輸入 URL,以下內容按預期回傳:
wget -S "${URL}" -O /dev/stdout | head
wget我正在運行的版本是:
GNU Wget 1.20.3 built on linux-gnu.
關于發生了什么的任何線索?
uj5u.com熱心網友回復:
關于發生了什么的任何線索?
很少有HTTP 請求方法也稱為 HTTP 動詞,在這種情況下,其中 2 個是相關的
- 得到
- 頭
當沒有另行指示時wget,確實會首先使用它們,當--spider使用選項時,使用第二個選項,服務器應該只使用標頭(無正文)回應。
AWS S3 預簽名鏈接
根據簽署和驗證 REST 請求 - Amazon Simple Storage Service的準備步驟之一如下
StringToSign = HTTP-Verb "\n"
Content-MD5 "\n"
Content-Type "\n"
Date "\n"
CanonicalizedAmzHeaders
CanonicalizedResource;
因此,我們可能會得出結論,AWS S3 預簽名鏈接將使用恰好 1 個 HTTP 動詞。您擁有的一個是用于GET. 如果您希望成功使用,請咨詢制作該鏈接的人,為您提供AWS S3 預簽名鏈接。HEAD--spider
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/511515.html
上一篇:Python中的分頁器
下一篇:AWSDynamoDB元資料
