我试图在javascript中从url(chrome驱动文件)下载文件;并希望将它发送到我的后端(php - laravel)。
var url = file.downloadUrl !== undefined ? file.webContentLink : file.exportLinks['application/pdf'];
console.log(url) // if I go to url, it downloads the file
if (url !== undefined) {
var remote = new XMLHttpRequest();
remote.open('GET', url);
remote.setRequestHeader('Authorization', 'Bearer ' + gapi.client.getToken().access_token);
remote.setRequestHeader('Access-Control-Allow-Origin', '*');
remote.onload = function(e) {
vm.handle_download(remote.responseText, file, 200); // do something with the fetched content;
};
remote.onerror = function(e) {
vm.handle_download('error response', null, remote.statusText);
};
remote.send();
} else vm.handle_download('no downloadable url', {
file: null,
status: 'error'
});
和句柄
handle_download: function (content, file, status) {
if (status !== 200) {
console.log('error occured on status')
return;
}
}
无法加载https://drive.google.com/uc?id=1D12321ofd4CNG-m9_Mp4aiDcnibNf&export=download:对预检请求的响应未通过访问控制检查:请求的资源上没有“Access-Control-Allow-Origin”标头。因此,不允许原点“http://test.dev”访问。
答案 0 :(得分:1)
这是由于网络中same origin policy引起的预期行为。由于您是出于测试目的而执行此操作,请尝试使用此Allow-Control-Allow-Origin Chrome扩展程序。
您可以在Using CORS tutorial中详细了解如何实现此功能。 此SO post也可能提供额外的见解。