【OSS 排查方案-10 请求 OSS 返回 404】

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 什么是 404 404 标准的 http code 状态码,代表用户请求的资源在服务端不存在, 404 并不是一个异常状态码?而是一个正常的响应。换句话说 404 已经成为了一个结果,这种响应常见在 client 端下载 OSS 的资源时出现。

2000元阿里云代金券免费领取,2核4G云服务器仅664元/3年,新老用户都有优惠,立即抢购>>>


阿里云采购季(云主机223元/3年)活动入口:请点击进入>>>,


阿里云学生服务器(9.5元/月)购买入口:请点击进入>>>,

作者:张医博

什么是 404

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

做好预防

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

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 无法完成上传。
image.png

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

有以下几个原因

  • 客户端的子账号有权限,把 OSS 的文件删除了。
  • 具备客户合法的 AK SK 通过 API 删除了。
  • 具备合法账号密码的人在控制台删除了。
  • 拥有者设置过生命周期过期被删除了。
  • bucket 和其他 bucket 有跨区复制的关系,其他的 bucket 执行了删除操作,同步到当前的 bucket,所以文件被删除。
相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
5天前
|
安全 网络安全 开发工具
对象存储oss使用问题之flutter使用http库进行post请求文件上传返回400如何解决
《对象存储OSS操作报错合集》精选了用户在使用阿里云对象存储服务(OSS)过程中出现的各种常见及疑难报错情况,包括但不限于权限问题、上传下载异常、Bucket配置错误、网络连接问题、跨域资源共享(CORS)设定错误、数据一致性问题以及API调用失败等场景。为用户降低故障排查时间,确保OSS服务的稳定运行与高效利用。
47 1
|
5天前
|
JavaScript Java Serverless
函数计算中,这里是用的curl的方式,如何改用http的post方式请求?还有如何设置oss打包的zip的保存目录?
函数计算中,这里是用的curl的方式,如何改用http的post方式请求?还有如何设置oss打包的zip的保存目录?
161 0
|
5月前
|
存储 Kubernetes 对象存储
Kubernetes版本对接对象存储几种方案
Kubernetes版本对接对象存储几种方案
210 0
|
8月前
|
对象存储
OSS镜像回源不支持HEAD请求吗
OSS镜像回源不支持HEAD请求吗
|
对象存储
通过非上海oss链接请求阿里云人脸修复增强接口
在使用阿里云视觉智能开放平台时,除了使用oss链接调用接口,也可以通过本地图片流的方式调用接口
282 0
|
Java 开发工具 对象存储
OSS如何生成删除请求的签名url
OSS如何生成删除请求的签名url
OSS如何生成删除请求的签名url
|
移动开发 JSON JavaScript
阿里云OSS PostObject错误及排查详细版本
PostObject使用表单上传文件到OSS。PostObject的消息实体通过 多重表单格式multipart/form-data 编码,详细说明请参看 RFC 2388。Put Object中参数通过HTTP请求头传递,Post Object参数则作为消息体的表单域传递。
1623 0
|
存储 分布式计算 Kubernetes
Github 29K Star的开源对象存储方案——Minio入门宝典
对象存储不是什么新技术了,但是从来都没有被替代掉。为什么?在这个大数据发展迅速地时代,数据已经不单单是简单的文本数据了,每天有大量的图片,视频数据产生,在短视频火爆的今天,这个数量还在增加。有数据表明,当今世界产生的数据,有80%是非关系型的。那么,对于图片,视频等数据的分析可以说是大数据与人工智能的未来发展方向之一。
1243 0
Github 29K Star的开源对象存储方案——Minio入门宝典
|
存储 机器学习/深度学习 分布式计算
非结构化数据怎么存?——开源对象存储方案介绍
过去的相当长的一段时间里,商用对象存储占据了市场上的大量的份额。国外的Amazon S3,国内的阿里云OSS都成为了大多数公司的选择。但是构建一个企业级的数据湖(包括结构化和非结构化数据)已经成为了越来越多公司的目标。那么Hadoop还能满足我们的要求吗?还是我们需要更多的选择?
1063 0
非结构化数据怎么存?——开源对象存储方案介绍
|
存储 对象存储 CDN
【对象存储OSS/网络分发加速CDN】使用OSS后,如何实现流量访问限制或请求次数的限制
描述使用对象存储OSS后,如何实现流量访问限制或请求次数的限制
2084 2

热门文章

最新文章

http://www.vxiaotou.com