记一个问题:
今天从阿里云的OSS服务里用XMLHttpRequest请求图片(OSS已经配置CORS),结果却还是报CORS错误
然后Chrome启用Disable Cache 或请求头里添加"Cache-Control","no-cache"后却没有问题了。
排查原因,发现是CORS安全响应头的问题,没有匹配上OSS的CORS配置.
CORS 安全响应头列表和文档:https://developer.mozilla.org/en-US/docs/Glossary/CORS-safelisted_response_header
XMLHttpRequest CORS 扩展例子:
function createCORSRequest(method, url) {
let xhr = new XMLHttpRequest();
if ("withCredentials" in xhr) {
// XHR for Chrome/Firefox/Opera/Safari.
xhr.open(method, url, true);
}
else if (typeof XDomainRequest != "undefined") {
// XDomainRequest for IE.
xhr = new XDomainRequest();
xhr.open(method, url);
}
else
{
// CORS not supported.
xhr = null;
}
return xhr;
}
let req = new createCORSRequest('GET', 'https://xunchayun.oss-cn-beijing.aliyuncs.com/3dImage/20190715/9058134a-d375-4f36-8192-906c02576848.jpg');
xhr.setRequestHeader("Cache-Control","no-cache");
req.send();