访问 OSS 资源跨域问题前端解决方案

760 阅读1分钟

在最近的需求中有需要获取 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();
  });
}

所以需要两个步骤:

  1. OSS 文件服务配置权限
  2. 前端请求头加上 Cache-Control: no-cache