在最近的需求中有需要获取 OSS 的图片转为 base64 的需求,在需求刚开始使用 XHR 发送资源请求,发现出现了跨域,点了几次有能够正常访问了,但是认为可能是 OSS 权限需要配置然后配置了一下。但是还是出现这样的问题,问题根本没有解决,后面在发送获取图片请求的头部加上 Cache-Control: no-cache
之后问题解决了,再也没有出现跨域了。
附上代码:
const getOSSBlobResource = (url: string): Promise<Blob> => {
return new Promise((resolve) => {
const xhr = new XMLHttpRequest();
xhr.open("GET", url, true);
xhr.responseType = "blob";
xhr.setRequestHeader("Cache-Control", "no-cache");
xhr.onload = () => {
if (xhr.status === 200) {
resolve(xhr.response);
}
};
xhr.send();
});
}
所以需要两个步骤:
- OSS 文件服务配置权限
- 前端请求头加上
Cache-Control: no-cache