【发布时间】:2017-02-06 02:38:45
【问题描述】:
我正在使用以下代码通过 Microsoft Graph API 将一个大文件(但小于 62MB)上传到 OneDrive。
let req = new XMLHttpRequest();
req.open("PUT", url, true);
req.setRequestHeader("Authorization", "Bearer " + this.authProvider.tokens.graph);
req.setRequestHeader("Content-Length", file.size.toString());
req.setRequestHeader("Content-Range", "bytes 0-" + (file.size - 1).toString() + "/" + file.size.toString() );
req.upload.onprogress = (e) => {
let progress = Math.floor(e.loaded / e.total * 100);
console.log(progress);
};
req.upload.onerror = (e: any) => {
console.log("error");
};
req.onload = (e) => {
console.log("done");
};
req.send(buffer);
Chrome(迄今为止的最新版本)运行良好,但在创建会话后,create session 请求返回的 url 上的上传失败。我在 IE 11 控制台和网络选项卡中收到错误SCRIPT7002: XMLHttpRequest: Network Error 0x80070005, Access is denied.,我看到请求状态为aborted,发起者是CORS Preflight 请求。根据其他测试,我认为错误来自req.open("PUT", url, true); 行。
-更新-
它实际上是对返回的 URL 的飞行前 CORS (OPTIONS) 请求实际上失败了,它在 Chrome 中就可以通过了。
【问题讨论】:
标签: internet-explorer xmlhttprequest office365 microsoft-graph-api office365-apps