問題
在實際工作中,我們為了方便,會將一些腳本儲存在雲端(阿里雲OSS),這樣方便我們使用和下載,但是在實際的使用過程中,我們會遇到一些問題。
示例鏈接: https://djxlsp.oss-cn-shenzhen.aliyuncs.com/shell/tcp-status.sh?OSSAccessKeyId=LTAI8hlsoWKOIPS8&Expires=1561364265&Signature=w2i1aL3sfHcX%2Fj06N52%2BhSvQaJU%3
然后我們通過 wget
進行下載。
[root@localhost ~]# wget https://djxlsp.oss-cn-shenzhen.aliyuncs.com/shell/tcp-status.sh?OSSAccessKeyId=LTAI8hlsoWKOIPS8&Expires=1561363647&Signature=bBk3TUEGI7vE2%2F5AIJYv0sOSrW0%3D
[1] 20626
[2] 20627
[root@localhost ~]# --2019-06-24 15:07:40-- https://djxlsp.oss-cn-shenzhen.aliyuncs.com/shell/tcp-status.sh?OSSAccessKeyId=LTAI8hlsoWKOIPS8
Resolving djxlsp.oss-cn-shenzhen.aliyuncs.com (djxlsp.oss-cn-shenzhen.aliyuncs.com)... 120.77.166.194, 120.77.166.192
Connecting to djxlsp.oss-cn-shenzhen.aliyuncs.com (djxlsp.oss-cn-shenzhen.aliyuncs.com)|120.77.166.194|:443... connected.
HTTP request sent, awaiting response... 403 Forbidden
2019-06-24 15:07:40 ERROR 403: Forbidden.
發現是報 403
錯誤,我開始以為是資源不存在,還是怎么。但是發現該 URL
放在 瀏覽器里面可以正常打開,那就不是資源的問題,我在想是否是 Referer
或者是 未設置 Header
。我們設置了下這兩個參數,然后進行訪問,發現還是不行。
解決辦法
原因是 URL
里面包含特殊字符 比如 &,導致 URL 被截斷,造成請求 URL 不完整,OSS 中不存在對應的文件信息,所以訪問被拒絕提示 403。因此在 Linux 平台 URL 需要加上英文單引號才可以通過 wget
工具下載。
正確寫法
wget 'https://djxlsp.oss-cn-shenzhen.aliyuncs.com/shell/tcp-status.sh?OSSAccessKeyId=LTAI8hlsoWKOIPS8&Expires=1561364265&Signature=w2i1aL3sfHcX%2Fj06N52%2BhSvQaJU%3D' -O tcp-status.sh
我們如果是下載比較大的文件的時候,我們可以使用 -c
參數使 wget
工具在連接中斷的時候嘗試斷點續傳。