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 进行下载。

[[email protected] ~]# wget https://djxlsp.oss-cn-shenzhen.aliyuncs.com/shell/tcp-status.sh?OSSAccessKeyId=LTAI8hlsoWKOIPS8&Expires=1561363647&Signature=bBk3TUEGI7vE2%2F5AIJYv0sOSrW0%3D
[1] 20626
[2] 20627
[[email protected] ~]# --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

时间: 2024-10-09 18:08:45

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

阿里云 oss 小文件上传进度显示

对阿里云OSS上传小文件时的进度,想过两个方法:一是.通过多线程监測Inputstream剩余的字节数来计算,可是由于Inputstream在两个线程中共用,假设上传线程将Inputstream关闭,在监測线程就会报"句柄无效"的错误,甚至会导致上传失败:第二个方法是通过线程不断监測OSS上已经上传文件的大小,可是在文件全然上传前是不能获得文件大小的. 最后突然灵感来了,把两个方法同一时候使用就行监測文件上传的进度. 看代码: // 上传小文件 private static void

linux本地远程上传&下载阿里云oss的shell脚本实现方法

当项目早服务器中运行时会产生大量的日志,如果日志不处理全部放在本服务器中显然没有那么大的内存,除了要做必要的删除也要做日志必要备份. 创建oss.sh脚本: #!/bin/bash host="oss-cn-beijing.aliyuncs.com" bucket="****" ###bucket名字### Id="****************" ###Access ID### Key="******************&quo

阿里云短信服务报错org.json.JSONArray.iterator()Ljava/util/Iterator

maven依赖如下: <!-- 阿里云短信sdk --> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>3.7.1</version> </dependency> <dependency> <groupId>com.aliyun

Windows环境下用C#编程将文件上传至阿里云OSS笔记

本系列文章由ex_net(张建波)编写,转载请注明出处. http://blog.csdn.net/ex_net/article/details/24962567 作者:张建波 邮箱: [email protected]  欢迎来信交流! 第1步: 下载阿里云OSS的SDK包,由于笔者的环境是PHP服务,所以下载的是PHP的SDK包 http://help.aliyun.com/view/13438816.html 第2步:将代码整合进你的网站或服务中. 第3步:配置OSS访问接口 (1)找到c

PHP实现阿里云OSS文件上传(支持批量)

上传文件至阿里云OSS,整体逻辑是,文件先临时上传到本地,然后在上传到OSS,最后删除本地的临时文件(也可以不删,具体看自己的业务需求),具体实现流程如下: 1.下载阿里云OSS对象上传SDK(PHP版) 通过Github下载 2.解压后,可自行修改目录名称,以下为本人项目实例(aliyun_oss改过之后的名称) 项目目录结构如下: 3.Index.php 为文件上传静态表单页 4.do_upload.php 为文件处理控制页,封装的代码如下:上传文件相关的辅助函数可以自行封装,本文是为了便于

阿里云oss上传图片

1.首先我们要下载阿里云oss的sdk包:(可以下载原版的,改过的通用版在本人的百度云,嘎嘎嘎~) 2.下载好之后放到项目文件目录里面 3.要在需要的控制器引用这个sdk文件例如: include("./ThinkPHP/Library/Vendor/oss/index.php"); 然后实例化这个类,调用上传的方法 =================================================== 再看类文件:下载好了以后修改类文件的index.php <?

物联网架构成长之路(18)-接阿里云OSS服务

1.申请/购买OSS服务 在阿里云上申请/购买OSS服务, 然后在会得AccessKeyID,AccessKeySecret,bucketName 这三个东西 2.增删改查 在pom.xml文件上增加 1 <!-- https://mvnrepository.com/artifact/com.aliyun.oss/aliyun-sdk-oss --> 2 <dependency> 3 <groupId>com.aliyun.oss</groupId> 4 &

angulaijs中的ng-upload-file与阿里云oss服务的结合,实现在浏览器端上传文件到阿里云(速度可以达到1.5M)

angularjs结合aliyun浏览器端oos文件上传加临时身份验证例子 在服务端获取sts 源码: public class StsServiceSample { // 目前只有"cn-hangzhou"这个region可用, 不要使用填写其他region的值 //<setting name="accessKeyId" value="H6JSh0Y****z2cGa" /> //<setting name="ecr

阿里云OSS上传文件模块

1 package com.hughes.bcsc.app.core.util.oss; 2 3 import java.io.ByteArrayInputStream; 4 import java.io.ByteArrayOutputStream; 5 import java.io.File; 6 import java.io.FileInputStream; 7 import java.io.FileNotFoundException; 8 import java.io.IOExceptio