小知识:解决springcloud阿里云OSS文件访问跨域问题的实现

引言

最近在高德地图中引用阿里云OSS存储的图片时,出现跨域访问问题,特此记录,以方便后续同学参考

解决

1、在阿里云OSS后台管理中,进入权限管理,进入跨域设置,添加跨域规则,设置来源为*

2、至此配置完成后访问图片还是会出现跨域问题,这是因为OSS文件默认会开启缓存,及后续访问的实际上是缓存的文件,这就会导致不能匹配到我们上述配置的跨域规则

于是我们需要将缓存禁用掉,如果文件就一两个的话,可以直接在后台中设置禁用缓存,将HTTP头中Cache-Control设置为no-cache

%小知识:解决springcloud阿里云OSS文件访问跨域问题的实现-猿站网-插图

3、因为目前阿里云后台只支持单个文件的HTTP头设置,并不支持批量设置,所以到有多个文件或者后续上传的文件都不需要缓存时就不能满足了

那么我们如何来实现这个批量禁用缓存的需求呢。答案就是在上传文件到OSS的时候在请求头中设置Cache-Control为no-cache

首先上传阿里云OSS的接口是基于aliyun-sdk-oss依赖的

<dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> </dependency>

其次我们观察该依赖包提供的上传文件接口,会发现其中有一个方法可以设置ObjectMetadata

%小知识:解决springcloud阿里云OSS文件访问跨域问题的实现-1猿站网-插图

而ObjectMetadata中是可以设置Header的

%小知识:解决springcloud阿里云OSS文件访问跨域问题的实现-2猿站网-插图

那么解决的方法就很清晰了,我们只需要在调用该文件上传put方法时,在ObjectMetadata中设置上我们需要的Header即可,参考代码如下:

private final OSSClient ossClient; @PostMapping(“/put-file-with-nocache”) public PutObjectResult putFileWithNoCache(@RequestParam MultipartFile file) { String fileName = file.getOriginalFilename(); ObjectMetadata metadata = new ObjectMetadata(); // 取消文件缓存,文件每次都会从OSS服务器获取 metadata.setHeader(“Cache-Control”, “no-cache”); metadata.setHeader(“Expires”, “0”); PutObjectResult bucketName = ossClient.putObject(“bucketName”, fileName, file.getInputStream(), metadata); return bucketName; }

之后通过该接口上传的图片就不会再有跨域问题了,我们在测试工具中调用访问该图片,也会发现其response中会多出一个cache-control: no-cache的响应头了。

%小知识:解决springcloud阿里云OSS文件访问跨域问题的实现-1猿站网-插图

到此这篇关于解决springcloud阿里云OSS文件访问跨域问题的实现的文章就介绍到这了,更多相关springcloud OSS文件跨域内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://juejin.cn/post/7106079938775613470

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:Java详细讲解异常Exception的处理

2023-2-27 15:12:02

建站知识

小知识:springboot与vue详解实现短信发送流程

2023-2-27 15:22:55

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索