报错403,查阅过资料说是权限问题,但是我把存储空间改为公共读写,还给使用的用户添加对应的oss权限还是报的一样错误,求帮帮 自定义策略我也用过,不过感觉第一条策略已经包含了对bucket的管理,不知道问题出在哪里..
说明访问OSS的用户没有当前操作的权限。请确认使用AccessKeyID/AccessKeySecret是正确,可以参考阿里云文档
#十分感谢各位的回答提供的思路,目前问题是解决了,是策略问题,我在后端签发策略Policy的时候规定前端直连oss的key需要一定的格式,而我前端上传的时候没有按照这个格式进行调整,导致上诉报错。 #会403报错的问题有很多,建议还是慢慢测试接口、测试权限一步步来,我就是步子太大扯着蛋。 #最后谢谢各位的帮忙!
如果已经将存储空间的权限设置为公共读写,并且给使用的用户添加了对应的 OSS 权限,但仍然无法上传图片,那么可能是在生成签名时未正确设置权限。在生成签名时,需要设置 policy 字段来指定上传文件的权限。如果没有正确设置 policy 字段,OSS 将无法验证上传请求的权限,从而返回 403 错误。参考下我之前写的代码:const accessKeyId = 'your-accessKeyId';const accessKeySecret = 'your-accessKeySecret';const bucket = 'your-bucket';const expiration = new Date().getTime() + 3600 * 1000; // 1 hourconst policy = { expiration, conditions: [ ['content-length-range', 0, 104857600], // 0B-100MB { bucket }, ['starts-with', '$key', ''], // 允许上传任意文件名 { acl: 'public-read' }, // 允许公共读 ],};const policyBase64 = Buffer.from(JSON.stringify(policy)).toString('base64');const signature = crypto.createHmac('sha1', accessKeySecret).update(policyBase64).digest('base64');const formData = { OSSAccessKeyId: accessKeyId, policy: policyBase64, signature,};其中,acl: 'public-read' 表示允许公共读。请注意,在设置公共读权限时,需要确保存储空间的权限设置也允许公共读,否则仍然会返回 403 错误。另外,如果上传请求中带有自定义 header 或其他参数,也可能导致权限验证失败。请确保上传请求中不包含无法通过权限验证的参数。望采纳!
如果已经将存储空间的权限设置为公共读写,并且给使用的用户添加了对应的 OSS 权限,但仍然无法上传图片,那么可能是在生成签名时未正确设置权限。
在生成签名时,需要设置 policy 字段来指定上传文件的权限。如果没有正确设置 policy 字段,OSS 将无法验证上传请求的权限,从而返回 403 错误。
参考下我之前写的代码:
const accessKeyId = 'your-accessKeyId';
const accessKeySecret = 'your-accessKeySecret';
const bucket = 'your-bucket';
const expiration = new Date().getTime() + 3600 * 1000; // 1 hour
const policy = {
expiration,
conditions: [
['content-length-range', 0, 104857600], // 0B-100MB
{ bucket },
['starts-with', '$key', ''], // 允许上传任意文件名
{ acl: 'public-read' }, // 允许公共读
],
};
const policyBase64 = Buffer.from(JSON.stringify(policy)).toString('base64');
const signature = crypto.createHmac('sha1', accessKeySecret).update(policyBase64).digest('base64');
const formData = {
OSSAccessKeyId: accessKeyId,
policy: policyBase64,
signature,
};
其中,acl: 'public-read' 表示允许公共读。请注意,在设置公共读权限时,需要确保存储空间的权限设置也允许公共读,否则仍然会返回 403 错误。
另外,如果上传请求中带有自定义 header 或其他参数,也可能导致权限验证失败。请确保上传请求中不包含无法通过权限验证的参数。
望采纳!
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
对象存储 OSS 是一款安全、稳定、高性价比、高性能的云存储服务,可以帮助各行业的客户在互联网应用、大数据分析、机器学习、数据归档等各种使用场景存储任意数量的数据,以及进行任意位置的访问,同时通过丰富的数据处理能力更便捷地使用数据。