开发者社区> 张医博> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

访问 OSS 文件 404 分析

简介: 什么是 404 404 标准的 http code 状态码,代表用户请求的资源在服务端不存在, 404 并不是一个异常状态码?而是一个正常的响应。换句话说 404 已经成为了一个结果,这种响应常见在 client 端下载 OSS 的资源时出现。
+关注继续查看

什么是 404

404 标准的 http code 状态码,代表用户请求的资源在服务端不存在, 404 并不是一个异常状态码?而是一个正常的响应。换句话说 404 已经成为了一个结果,这种响应常见在 client 端下载 OSS 的资源时出现。

做好预防

很多情况如果服务端的历史日志保存时间有限,那么出现问题时也无法查证,所以建议使用 OSS 先把日志功能开启,将 OSS 每天的数据都自动备份到用户指定的目录下,费用低廉。
1

why 404

  • 检查 客户端提供的 objectname 是否正确,确保不存在低级的拼写错误。
  • 客户端之前上传是否成功,如果成功 OSS 会返回 requestid,凡事没有 requestID 的并不能保证已经上传到 OSS 成功。
  • 客户端可以根据开启的 log 查询下对应时间点 OSS 出现 404 的情况。
  • OSS 是否开启过 生命周期 功能,开启这个功能,触发生命周期管理规则后,会将满足条件的 URL 完全上除掉。

客户端上传成功,但是下载返回 404

首先这种情况是不存在,如果已经上传到 OSS 的文件,除了会冗余写多份,也受到权限的严格限制,匿名非法的访问是不可能直接删除的,除非使用者自己把 bucket 设置为公共读写(高危权限)
一般对上传成功有个误区,认为返回 200 就代表文件已经上传成功其实这并不准确。会造成两种情况

  • 收到状态码 200 的情况后立刻取请求 OSS ,返回了 404 ,等一会再访问就 200 ,怀疑到 OSS 返回 200 和真实的写入成功不同步。
  • 上传成功收到 200 状态码,但访问一直都是 404
  • 分片上传或者断点续传已经收到了 200 并切有 requestID 的情况下,访问 OSS 仍然返回 404。

其实以上两种情况都是对返回状态的判断不准确导致,可靠的判断方式是,if result.status==200 && result.requestID != None 的情况下才是上传成功。有的 http 请求被 http 劫持的情况下会收到一个伪造的 200 状态码并不是真实的返回。

另外分片上传或者断点续传比叫特殊,是采用将原文件切片的形式上传,每一个分片 multipart 上传成功都会返回 200 和 requestID,这种情况应该以 complete 合并分片后返回的 200 & requestID 为准。

极特殊的情况是客户端使用分片上传时对用的 uploadID 凭证是 A,但是完成合并时用的 uploadID 凭证是 B,OSS 找不到原始的 A 凭证,所以报 404 无法完成上传。
1

文件之前一直存在,突然访问 404

有以下几个原因

  • 客户端的子账号有权限,把 OSS 的文件删除了。
  • 具备客户合法的 AK SK 通过 API 删除了。
  • 具备合法账号密码的人在控制台删除了。
  • 拥有者设置过生命周期过期被删除了。
  • bucket 和其他 bucket 有跨区复制的关系,其他的 bucket 执行了删除操作,同步到当前的 bucket,所以文件被删除。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
利用函数计算对oss压缩文件做自动解压处理
函数计算提供了一种事件驱动的计算模型。函数的执行是由事件驱动的,函数计算触发器描述了一组规则,当某个事件满足这些规则,事件源就会触发相应的函数。
4545 0
oss资源访问连接问题
ssl证书 域名绑定 自有域名
0 0
CEN+私网NAT实现跨地域访问OSS需求-CEN基础版
CEN+私网NAT实现跨地域访问OSS需求-CEN基础版
0 0
通过OSS外表访问OSS数据
原文地址:通过OSS外表访问OSS数据 - 云原生关系型数据库 PolarDB MySQL引擎 - 阿里云PolarDB可以通过OSS外表直接查询存储在OSS上的CSV格式数据,有效地降低存储的成本。本文档主要介绍了通过OSS外表访问OSS数据的操作步骤。背景信息通过OSS外表,您可以把CSV格式的冷数据存储在OSS引擎上,并对冷数据进行查询和分析。具体原理如下:CSV格式的数据支持的数据类型包括
0 0
访问 OSS 这类对象存储最快的方式- JindoFS SDK |学习笔记
快速学习 访问 OSS 这类对象存储最快的方式- JindoFS SDK
0 0
Hadoop/Spark 访问 OSS 加速 | 学习笔记
快速学习Hadoop/Spark 访问 OSS 加速。
0 0
Spark 访问 OSS 透明缓存加速 | 学习笔记
快速学习Spark 访问 OSS 透明缓存加速。
0 0
Presto 访问 OSS 透明缓存加速 | 学习笔记
快速学习 Presto 访问 OSS 透明缓存加速。
0 0
访问oss出现报错:You have no right to access this object because of bucket acl
访问oss出现报错:You have no right to access this object because of bucket acl 也配置bucket权限和RAM用户权限了但是还是报错,然后看了下代码,发现到httpClient.execute(req)就直接403了 能问下大佬们这是什么问题吗,百度也没找到
0 0
+关注
张医博
喜欢钻研新的语言,动手实践自己想要学会的知识。
文章
问答
来源圈子
更多
作为全球云计算的领先者,阿里云为全球230万企业提供着云计算服务,服务范围覆盖200多个国家和地区。我们致力于为企业、政府等组织机构提供安全可靠的云计算服务,给用户带来极速愉悦的服务体验。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
阿里云 JindoFS+OSS 数据上云实战
立即下载
百问百答-OSS (上)
立即下载
百问百答-OSS (下)
立即下载