解決springcloud阿里云OSS文件訪問跨域問題的實現(xiàn)
引言
最近在高德地圖中引用阿里云OSS存儲的圖片時,出現(xiàn)跨域訪問問題,特此記錄,以方便后續(xù)同學(xué)參考
解決
1、在阿里云OSS后臺管理中,進(jìn)入權(quán)限管理,進(jìn)入跨域設(shè)置,添加跨域規(guī)則,設(shè)置來源為*
2、至此配置完成后訪問圖片還是會出現(xiàn)跨域問題,這是因為OSS文件默認(rèn)會開啟緩存,及后續(xù)訪問的實際上是緩存的文件,這就會導(dǎo)致不能匹配到我們上述配置的跨域規(guī)則
于是我們需要將緩存禁用掉,如果文件就一兩個的話,可以直接在后臺中設(shè)置禁用緩存,將HTTP頭中Cache-Control
設(shè)置為no-cache
3、因為目前阿里云后臺只支持單個文件的HTTP頭設(shè)置,并不支持批量設(shè)置,所以到有多個文件或者后續(xù)上傳的文件都不需要緩存時就不能滿足了
那么我們?nèi)绾蝸韺崿F(xiàn)這個批量禁用緩存的需求呢。答案就是在上傳文件到OSS的時候在請求頭中設(shè)置Cache-Control
為no-cache
首先上傳阿里云OSS的接口是基于aliyun-sdk-oss
依賴的
<dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> </dependency>
其次我們觀察該依賴包提供的上傳文件接口,會發(fā)現(xiàn)其中有一個方法可以設(shè)置ObjectMetadata
而ObjectMetadata
中是可以設(shè)置Header的
那么解決的方法就很清晰了,我們只需要在調(diào)用該文件上傳put
方法時,在ObjectMetadata中設(shè)置上我們需要的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服務(wù)器獲取 metadata.setHeader("Cache-Control", "no-cache"); metadata.setHeader("Expires", "0"); PutObjectResult bucketName = ossClient.putObject("bucketName", fileName, file.getInputStream(), metadata); return bucketName; }
之后通過該接口上傳的圖片就不會再有跨域問題了,我們在測試工具中調(diào)用訪問該圖片,也會發(fā)現(xiàn)其response中會多出一個cache-control: no-cache
的響應(yīng)頭了。
到此這篇關(guān)于解決springcloud阿里云OSS文件訪問跨域問題的實現(xiàn)的文章就介紹到這了,更多相關(guān)springcloud OSS文件跨域內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring?Data?JPA框架的Repository自定義實現(xiàn)詳解
Spring?Data?JPA是Spring基于JPA規(guī)范的基礎(chǔ)上封裝的?套?JPA?應(yīng)?框架,可使開發(fā)者?極簡的代碼即可實現(xiàn)對數(shù)據(jù)庫的訪問和操作,本篇我們來了解Spring?Data?JPA框架的Repository自定義實現(xiàn)2022-04-04java實現(xiàn)識別二維碼圖片功能方法詳解與實例源碼
這篇文章主要介紹了java實現(xiàn)識別二維碼圖片,java無法識別二維碼情況下對二維碼圖片調(diào)優(yōu)功能方法與實例源碼,需要的朋友可以參考下2022-12-12mybatis3.3+struts2.3.24+mysql5.1.22開發(fā)環(huán)境搭建圖文教程
這篇文章主要為大家詳細(xì)介紹了mybatis3.3+struts2.3.24+mysql5.1.22開發(fā)環(huán)境搭建圖文教程,感興趣的小伙伴們可以參考一下2016-06-06關(guān)于kafka發(fā)送消息的三種方式總結(jié)
這篇文章主要介紹了關(guān)于kafka發(fā)送消息的三種方式總結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-04-04