我使用javascript客户端API上传和下载Google驱动器文件。它以前很棒。但是最近之后(也许在20/02/2020之后)成功上传文件,但是当我下载文件时,发生了CORS问题。
我可以成功获取文件元信息。
var request = gapi.client.drive.files.get({
'fileId': fileId
});
然后我使用XMLHttpRequest下载它,但出现以下错误:
从源'https://00e9e64bacc0efeebb87d2a0887d78885bda74a4be7b94651f-apidata.googleusercontent.com/download/drive/v2/files/1E'对从'https://content.googleapis.com/drive/v2/files/1E...&alt=media&source=downloadUrl ..'重定向到'https://example.com ..”的XMLHttpRequest的访问已被CORS策略阻止:对预检请求的响应未通过访问控制检查:否' Access-Control-Allow-Origin'标头出现在所请求的资源上。
下载代码:
var xhr = new XMLHttpRequest();
xhr.open('GET', file.downloadUrl);
xhr.responseType = "text";
xhr.setRequestHeader('Authorization', 'Bearer ' + access_token);
if(start!=undefined){
var end = length? (start+length-1):'';
xhr.setRequestHeader('Range', 'bytes='+start+'-'+end);
}
xhr.onload = function() {
if(callback)callback(xhr.responseText);
};
xhr.onerror = function(e) {
if(callback)callback(e);
};
xhr.send();
任何建议或解决方法将不胜感激。
此处存在相同问题:文件导出(例如Google表格)仍在工作,但文件下载(如PDF)不再起作用。通过XMLHttpRequest调用文件downloadUrl导致接收到对另一个CORS调用失败的downloadURL的重定向。
问题不是特定于Chrome的,因此似乎与Google API行为的变化更相关