位置: IT常识 - 正文

关于oss使用sts 后台签发临时token前端直传大文件的错误记录(oss使用场景)

编辑:rootadmin
关于oss使用sts 后台签发临时token前端直传大文件的错误记录 文章目录前言遇到的问题1. NoSuchBucket : The specified bucket does not exist.2. com.aliyuncs.exceptions.ClientException: InvalidParameter.RoleSessionName : The parameter RoleSessionName is wrongly formed.3. 报错:Access to XMLHttpRequest at '上传url' from origin '本地url' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.4.报错:Multipart upload 'xxx' failed === ConnectionTimeoutError: Connect timeout for 60000ms5. 报错:Error: Please set the etag of expose-headers in OSS6. 报错:OperationNotSupportedError: This operation don't support x-oss-storage-class.前言

推荐整理分享关于oss使用sts 后台签发临时token前端直传大文件的错误记录(oss使用场景),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:oss常用功能,oss如何使用,oss使用教程,使用oss的好处,oss使用教程,oss使用场景,oss用法,使用oss的好处,内容如对您有帮助,希望把文章链接给更多的朋友!

遇到的问题1. NoSuchBucket : The specified bucket does not exist.

这个问题出现在执行下面这条代码时:

// 添加endpoint(直接使用STS endpoint,前两个参数留空,无需添加region ID)DefaultProfile.addEndpoint("", "", "Sts", ENDPOINT);// 进行角色授权 构造default profile(参数留空,无需添加region ID)IClientProfile profile = DefaultProfile.getProfile("", accessKeyId, accessKeySecret);// 用profile构造clientDefaultAcsClient client = new DefaultAcsClient(profile);final AssumeRoleRequest request = new AssumeRoleRequest();request.setMethod(MethodType.POST);request.setRoleArn(roleArn); // role-Arnrequest.setRoleSessionName(roleSessionName); request.setDurationSeconds(durationSeconds); // 3600s// 针对该临时权限可以根据该属性赋予规则,格式为json,没有特殊要求,默认为空// request.setPolicy(policy); // Optionalfinal AssumeRoleResponse response = client.getAcsResponse(request);AssumeRoleResponse.Credentials credentials = response.getCredentials();final AssumeRoleResponse response = client.getAcsResponse(request);

然后找资料无意中发现有位博主特意最后提示了一句:

endpoint 不是 oss 的 endpoint 而是 sts 的 endpoint. 如果用了oss的endpoint,则会报错:bucket not exists.

补:参考sts文档链接:sts接入点

2. com.aliyuncs.exceptions.ClientException: InvalidParameter.RoleSessionName : The parameter RoleSessionName is wrongly formed.

原因是 roleSessionName 我设置成了空串。

private static final String roleSessionName = "";关于oss使用sts 后台签发临时token前端直传大文件的错误记录(oss使用场景)

改为:

private static final String roleSessionName = "alice";

官方该参数给的示例而已,可能不能为空串吧。

3. 报错:Access to XMLHttpRequest at ‘上传url’ from origin ‘本地url’ has been blocked by CORS policy: Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.

具体报错信息截图:

看到这个第一时间其实我就想到了是阿里云控制台跨域规则配置有问题,截图里分片上传是以PUT的提交方式,赶紧去看了一下配置规则,果然前人只配置的是GET、POST。(PS:由于我接手改造,故能不动原先设置就尽量不动,先从代码找问题)。最后改了阿里云跨域配置规则后,这个问题得到解决。

补一下,跨域配置: ①控制台输入oss,进入oss控制台; ②打开bucket列表,点击任意一个bucket; ③点击数据安全——>跨域设置; ④添加跨域规则: over~

4.报错:Multipart upload ‘xxx’ failed === ConnectionTimeoutError: Connect timeout for 60000ms

文档有说:

在使用MultipartUpload接口时,如果遇到ConnectionTimeoutError超时问题,业务方需自行处理超时逻辑。例如通过缩小分片大小、增加超时时间、重试请求或者捕获ConnectionTimeoutError错误等方法处理超时。更多信息,请参见网络错误处理。

这个问题,我这里解决办法就是,设置分片为100MB,以及设置超时时间:

const options = { // 获取分片上传进度、断点和返回值。 progress: (p, cpt, res) => { console.log(p); }, // 设置并发上传的分片数量。 parallel: 4, // 设置分片大小。默认值为1 MB,最小值为100 KB。 partSize: 1024 * 1024 * 100, headers, // 自定义元数据,通过HeadObject接口可以获取Object的元数据。 //meta: { year: 2020, people: "test" }, mime: "text/plain", timeout: 120000 // 设置超时时间};5. 报错:Error: Please set the etag of expose-headers in OSS

截图: 那么根据提示,去查看这个帮助文档:https://help.aliyun.com/document_detail/32069.html 然后在前提条件,点击安装 注意这里: 这里:

ETag x-oss-request-id x-oss-version-id

6. 报错:OperationNotSupportedError: This operation don’t support x-oss-storage-class.

截图如下: 去查了 http错误码及oss错误排查,没发现有对这个错误的介绍。只是发现在设置headers时,有这一项的设置,我只好注释掉。 原headers:(根据官方文档示例写的)

const headers = { // 指定该Object被下载时的网页缓存行为。 "Cache-Control": "no-cache", // 指定该Object被下载时的名称。 //"Content-Disposition": "example.txt", // 指定该Object被下载时的内容编码格式。 "Content-Encoding": "utf-8", // 指定过期时间,单位为毫秒。 //Expires: "1000", "Access-Control-Allow-Origin": "*", // 指定Object的存储类型。 //"x-oss-storage-class": "Standard", // 指定Object标签,可同时设置多个标签。 "x-oss-tagging": "Tag1=1&Tag2=2", // 指定初始化分片上传时是否覆盖同名Object。此处设置为true,表示禁止覆盖同名Object。 "x-oss-forbid-overwrite": "true", "Content-Type": 'application/x-www-form-urlencoded'};

感觉注释掉并不是好的解决办法,虽然不再报这个错误,哈哈。

本文链接地址:https://www.jiuchutong.com/zhishi/289709.html 转载请保留说明!

上一篇:将scss文件转换成css文件(sass转化为css)

下一篇:Linux系统驱动跟裸机驱动的区别(linux驱动和windows驱动)

  • 能回qq微信的智能手表有哪些(微信可以回qq消息吗)

    能回qq微信的智能手表有哪些(微信可以回qq消息吗)

  • 微信未经授权什么意思(微信未授权无法登录怎么办)

    微信未经授权什么意思(微信未授权无法登录怎么办)

  • 机箱上面的风扇进风还是出风(机箱上面的风扇是正面还是反面装)

    机箱上面的风扇进风还是出风(机箱上面的风扇是正面还是反面装)

  • 显存不足怎么解决方案(显存不足怎么解决是要加内存吗)

    显存不足怎么解决方案(显存不足怎么解决是要加内存吗)

  • 至强e52690相当于i几(至强e52690参数)

    至强e52690相当于i几(至强e52690参数)

  • 苹果系统安装出错怎么回事(安装苹果系统出错)

    苹果系统安装出错怎么回事(安装苹果系统出错)

  • 路由器pin是什么(路由器192.168.0.1)

    路由器pin是什么(路由器192.168.0.1)

  • vivo如何将软件移到内存卡(vivo如何将软件分享给微信好友)

    vivo如何将软件移到内存卡(vivo如何将软件分享给微信好友)

  • 手机如何设置密码锁屏(手机如何设置密码)

    手机如何设置密码锁屏(手机如何设置密码)

  • 荣耀20和荣耀20pro对比(荣耀20和荣耀20pro哪个好)

    荣耀20和荣耀20pro对比(荣耀20和荣耀20pro哪个好)

  • 苹果手机XR怎么退出当前应用(苹果手机xr怎么关机和开机)

    苹果手机XR怎么退出当前应用(苹果手机xr怎么关机和开机)

  • 手机私密空间在哪里(手机私密空间在哪)

    手机私密空间在哪里(手机私密空间在哪)

  • qq好友热播是什么意思(qq好友热播在哪里)

    qq好友热播是什么意思(qq好友热播在哪里)

  • 获取设备信息权限怎么设置(获取设备信息权限在哪里设置)

    获取设备信息权限怎么设置(获取设备信息权限在哪里设置)

  • 小米8是快充吗(小米8是快充吗还是慢充)

    小米8是快充吗(小米8是快充吗还是慢充)

  • uc私密视频怎么打开(uc加密视频在哪里找)

    uc私密视频怎么打开(uc加密视频在哪里找)

  • 函数now 的含义(now函数是什么函数)

    函数now 的含义(now函数是什么函数)

  • 红米k20有dc调光吗(红米k20pro的dc调光)

    红米k20有dc调光吗(红米k20pro的dc调光)

  • 三星折叠屏手机销售时间(三星折叠屏手机最新款zflip4)

    三星折叠屏手机销售时间(三星折叠屏手机最新款zflip4)

  • xr能用动态壁纸吗(xr能不能用动态壁纸)

    xr能用动态壁纸吗(xr能不能用动态壁纸)

  • 淘宝退货流程是什么(淘宝退货流程是什么样的)

    淘宝退货流程是什么(淘宝退货流程是什么样的)

  • 爱奇艺用券是什么意思(爱奇艺用劵)

    爱奇艺用券是什么意思(爱奇艺用劵)

  • 海恩斯章克申附近克鲁瓦尼国家公园中冰川和山脉的鸟瞰图,加拿大育空 (© Robert Postma/plainpicture)(海恩斯科普简介)

    海恩斯章克申附近克鲁瓦尼国家公园中冰川和山脉的鸟瞰图,加拿大育空 (© Robert Postma/plainpicture)(海恩斯科普简介)

  • 跨区域涉税事项报验是什么意思
  • 柴油车尾气处理液会计分录
  • 平均股东权益在利润表中怎么看
  • 生育津贴需要连续缴纳社保满一年吗
  • 事业单位无形资产管理制度
  • 临时税务登记可以开发票吗
  • 出差回来报销差旅费,补付现金的会计分录
  • 有差价的商品发票如何开具及注意事项
  • 公司内部食堂招待费账务处理
  • 增值税专票开具要求
  • 个人所得税核定征收计算公式
  • 公司开年会的费用怎么入账
  • 显示发票离线,应当如何处理
  • 汇算清缴是啥
  • 红字发票不小心点了暂存怎么办
  • 印花税的缴纳方式包括
  • 华为鸿蒙系统超级终端怎么用
  • 自用煤怎么入账
  • 虚增成本调增还会被处罚吗
  • 公司向股东借款合法吗
  • 农业合作社农民合作社
  • mac更新内容
  • win11可以触屏吗
  • 授权经销书模板
  • 怎么查上市公司
  • php date_diff
  • php编程技术
  • 购买股票的佣金计入
  • 商业银行流动性风险监管指标
  • 如何写煎荷包蛋过程
  • 定时器计数器实验报告
  • 用smart原则改写年底前完善客户资料
  • php采集源码
  • php的中文名
  • gpt3 plug
  • php如何实现多进程
  • 企业所得税包含在税金及附加里面吗
  • 退回社保怎么做分录
  • php好用的cms
  • 公司没有车加油费怎么报
  • 社会团体指的是什么单位
  • 个人缴纳社保部分怎么算
  • 如何网上填报个人所得税
  • 生活服务业可以开具增值税专用发票
  • sqlldr并发
  • 一般纳税人抵扣怎么算
  • 回购注销库存股的会计处理
  • 预付款开了发票
  • 一年发一次工资好不好
  • 财务费用中的利息支出
  • 应交销项税转出分录
  • 同一客户有应收应付可以相互抵消吗
  • 取得投资时支付的相关税费
  • 预付账款无法取得发票如何做账
  • 什么是个人独资企业营业执照
  • 会计结转是什么意思
  • mysql数据库自动重启
  • mysql应用案例
  • windf9
  • CentOS上查看系统信息以及配置防火墙的方法
  • 主板各个系列详解
  • centos查看当前yum源
  • win7开机黑屏怎么
  • windows8使用技巧
  • linux中sed命令
  • win7旗舰版要求
  • linux显示所有内容
  • cocos2dx内存管理
  • node.js设置环境变量
  • shell脚本详解
  • jq点击图片让图片进行切换
  • javascript的代码写在哪里
  • javascript什么用
  • node js require
  • python动态网页开发教程
  • html5 jquery
  • js 回调函数写法
  • 安卓动画不流畅
  • 酒店不给住怎么办
  • 出售固定资产税收怎么算
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设