" />

欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決springcloud阿里云OSS文件訪問(wèn)跨域問(wèn)題的實(shí)現(xiàn)

 更新時(shí)間:2022年06月07日 14:58:16   作者:wu55555  
本文主要介紹了解決springcloud阿里云OSS文件訪問(wèn)跨域問(wèn)題的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

引言

最近在高德地圖中引用阿里云OSS存儲(chǔ)的圖片時(shí),出現(xiàn)跨域訪問(wèn)問(wèn)題,特此記錄,以方便后續(xù)同學(xué)參考

解決

1、在阿里云OSS后臺(tái)管理中,進(jìn)入權(quán)限管理,進(jìn)入跨域設(shè)置,添加跨域規(guī)則,設(shè)置來(lái)源為*

2、至此配置完成后訪問(wèn)圖片還是會(huì)出現(xiàn)跨域問(wèn)題,這是因?yàn)镺SS文件默認(rèn)會(huì)開(kāi)啟緩存,及后續(xù)訪問(wèn)的實(shí)際上是緩存的文件,這就會(huì)導(dǎo)致不能匹配到我們上述配置的跨域規(guī)則

于是我們需要將緩存禁用掉,如果文件就一兩個(gè)的話,可以直接在后臺(tái)中設(shè)置禁用緩存,將HTTP頭中Cache-Control設(shè)置為no-cache

3、因?yàn)槟壳鞍⒗镌坪笈_(tái)只支持單個(gè)文件的HTTP頭設(shè)置,并不支持批量設(shè)置,所以到有多個(gè)文件或者后續(xù)上傳的文件都不需要緩存時(shí)就不能滿足了

那么我們?nèi)绾蝸?lái)實(shí)現(xiàn)這個(gè)批量禁用緩存的需求呢。答案就是在上傳文件到OSS的時(shí)候在請(qǐng)求頭中設(shè)置Cache-Controlno-cache

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

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

其次我們觀察該依賴包提供的上傳文件接口,會(huì)發(fā)現(xiàn)其中有一個(gè)方法可以設(shè)置ObjectMetadata

ObjectMetadata中是可以設(shè)置Header的

那么解決的方法就很清晰了,我們只需要在調(diào)用該文件上傳put方法時(shí),在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();
		// 取消文件緩存,文件每次都會(huì)從OSS服務(wù)器獲取
		metadata.setHeader("Cache-Control", "no-cache");
		metadata.setHeader("Expires", "0");
		PutObjectResult bucketName = ossClient.putObject("bucketName", fileName, file.getInputStream(), metadata);
		return bucketName;
	}

之后通過(guò)該接口上傳的圖片就不會(huì)再有跨域問(wèn)題了,我們?cè)跍y(cè)試工具中調(diào)用訪問(wèn)該圖片,也會(huì)發(fā)現(xiàn)其response中會(huì)多出一個(gè)cache-control: no-cache的響應(yīng)頭了。

 到此這篇關(guān)于解決springcloud阿里云OSS文件訪問(wèn)跨域問(wèn)題的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)springcloud OSS文件跨域內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論