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

问题

在实际工做中,咱们为了方便,会将一些脚本储存在云端(阿里云OSS),这样方便咱们使用和下载,可是在实际的使用过程当中,咱们会遇到一些问题。shell

示例连接:https://djxlsp.oss-cn-shenzhen.aliyuncs.com/shell/tcp-status.sh?OSSAccessKeyId=LTAI8hlsoWKOIPS8&Expires=1561364265&Signature=w2i1aL3sfHcX%2Fj06N52%2BhSvQaJU%3浏览器

而后咱们经过 wget 进行下载。bash

[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。咱们设置了下这两个参数,而后进行访问,发现仍是不行。tcp

解决办法

缘由是 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 工具在链接中断的时候尝试断点续传。code

相关文章
相关标签/搜索