業務場景
針對對象存儲OSS私有bucket權限的使用場景,每個object都需要生成一次簽名URL。針對m3u8的索引檔案,索引裡的每一個ts都需要生成一次簽名位址。
普通的帶簽名的m3u8位址,ts是沒有簽名的。

那麼播放器請求的時候,請求到ts時,就會抛出403簽名的權限報錯。
解決方法
1、官網提供了簽名URL的生成方法以及demo
https://help.aliyun.com/document_detail/100670.html?spm=a2c4g.11186623.6.659.181165d3h56PAa2、通過官網的方法,在header中添加上x-oss-process=hls/sign處理即可。
demo例子:(Java)
// Endpoint以杭州為例,其它Region請按實際情況填寫。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿裡雲主賬号AccessKey擁有所有API的通路權限,風險很高。強烈建議您建立并使用RAM賬号進行API通路或日常運維,請登入
https://ram.console.aliyun.com建立RAM賬号。
String accessKeyId = "";
String accessKeySecret = "";
String bucketName = "";
String objectName = "";
// 建立OSSClient執行個體。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 設定圖檔處理樣式。
String style = "hls/sign";
// 指定過期時間為10分鐘。
Date expiration = new Date(new Date().getTime() + 1000 60 10 );
GeneratePresignedUrlRequest req = new GeneratePresignedUrlRequest(bucketName, objectName, HttpMethod.GET);
req.setExpiration(expiration);
req.setProcess(style);
URL signedUrl = ossClient.generatePresignedUrl(req);
System.out.println(signedUrl);
// 關閉OSSClient。
ossClient.shutdown();
最終輸出的位址上的ts是帶上簽名的。