访问 OSS 文件 404 分析

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 什么是 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搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
1月前
|
Java API 开发工具
如何用阿里云 oss 下载文件
阿里云对象存储服务(OSS)提供了多种方式下载文件,以下讲解下各种方式的下载方法
808 1
|
5月前
|
数据处理 对象存储
如何利用 OSS 转换 webp 文件为jpeg
如何利用 OSS 转换 webp 文件为jpeg,OSS 样式使用
1511 1
|
1月前
|
弹性计算 前端开发 小程序
微信小程序上传文件至阿里云OSS直传(java后端签名+前端直传)
当前的通用文件上传方式是通过前端上传到服务器,再由服务器转存至对象存储。这种方式在处理小文件时效率尚可,但大文件上传因受限于服务器带宽,速度较慢。例如,一个100MB的文件在5Mbps带宽的阿里云ECS上上传至服务器需160秒。为解决此问题,可以采用后端签名的方式,使微信小程序直接上传文件到阿里云OSS,绕过服务器中转。具体操作包括在JAVA后端引入相关依赖,生成签名,并在微信小程序前端使用这个签名进行文件上传,注意设置正确的请求头和formData参数。这样能提高大文件上传的速度。
|
7天前
|
存储 数据可视化 安全
对象存储OSS产品常见问题之有几十亿个txt文件,单个4kb,使用oss如何解决
对象存储OSS是基于互联网的数据存储服务模式,让用户可以安全、可靠地存储大量非结构化数据,如图片、音频、视频、文档等任意类型文件,并通过简单的基于HTTP/HTTPS协议的RESTful API接口进行访问和管理。本帖梳理了用户在实际使用中可能遇到的各种常见问题,涵盖了基础操作、性能优化、安全设置、费用管理、数据备份与恢复、跨区域同步、API接口调用等多个方面。
39 11
|
7天前
|
存储 监控 开发工具
对象存储OSS产品常见问题之python sdk中的append_object方法支持追加上传xls文件如何解决
对象存储OSS是基于互联网的数据存储服务模式,让用户可以安全、可靠地存储大量非结构化数据,如图片、音频、视频、文档等任意类型文件,并通过简单的基于HTTP/HTTPS协议的RESTful API接口进行访问和管理。本帖梳理了用户在实际使用中可能遇到的各种常见问题,涵盖了基础操作、性能优化、安全设置、费用管理、数据备份与恢复、跨区域同步、API接口调用等多个方面。
37 9
|
22天前
|
存储 Cloud Native Serverless
云原生最佳实践系列 7:基于 OSS Object FC 实现非结构化文件实时处理
阿里云OSS对象存储方案利用函数计算FC,在不同终端请求时实时处理OSS中的原图,减少衍生图存储,降低成本。
|
1月前
|
分布式计算 DataWorks 关系型数据库
DataWorks报错问题之使用oss读取csv文件至odps 报错如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
1月前
|
存储 域名解析 应用服务中间件
阿里云OSS对象存储,实现内网访问,免流量费用
阿里云OSS对象存储,实现内网访问,免流量费用
424 1
|
2月前
|
域名解析 应用服务中间件 对象存储
解决阿里云oss图片浏览器访问直接下载而不是打开
解决阿里云oss图片浏览器访问直接下载而不是打开
335 0
|
3月前
|
SQL 存储 分布式计算
Hologres实时湖仓能力增强,挑战5分钟加速分析OSS数据
5分钟快速使用Hologres实时湖仓能力,无需移动数据,直接加速读取存储于数据湖OSS上的Hudi、Delta、Paimon等格式类型的数据