wget下载阿里云oss的文件报错403

问题

在实际工作中,我们为了方便,会将一些脚本储存在云端(阿里云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 工具在连接中断的时候尝试断点续传。

原文地址:https://www.cnblogs.com/operationhome/p/11077517.html