文件下载时出现 Microsoft Graph CORS 预检错误
Microsoft Graph CORS preflight error on file download
上下文:
我正在尝试将文件下载到 AngularJS 应用程序的缓冲区中,以便将文件转发到后端以存储在服务器上(后端不受我的控制)因此我需要将文件数据放入 Blob 然后获取上传了我自己的服务器。
问题:
Microsoft graph 在 JSON 文件中为我提供了他们推荐的 @microsoft.graph.downloadUrl
属性,该文件检索当前所选文件夹中所有文件的列表。当我用它来下载文件本身时,我遇到了 Access to XMLHttpRequest at [the URL from @microsft.graph.downloadUrl] from origin 'http://localhost:8080' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
我的代码:
const req = {
method: "GET",
url: file.item.downloadLink, // @microsoft.graph.downloadUrl
headers: {
Authorization: `Bearer ${this.token}`
},
eventHandlers: getEventUploadEvenHandlers(file), // update download progress bar
responseType: "blob"
};
const ret = await this.$http(req);
我的研究:
我翻阅了 5 年前的这篇文章:https://github.com/microsoftgraph/microsoft-graph-docs/issues/43
我在这里阅读了有关 CORS 和文件的整篇文章:https://docs.microsoft.com/en-us/onedrive/developer/rest-api/concepts/working-with-cors?view=odsp-graph-online
当然,我已经阅读了文档:https://docs.microsoft.com/en-us/graph/api/driveitem-get-content?view=graph-rest-1.0&tabs=http
我没有找到问题为什么会持续存在的答案
如果您对这个问题有任何经验或注意到您认为我遗漏的内容,我将不胜感激。
感谢您的帮助
所以基本上我的整个方法都是错误的。
我从其他云服务中推断出 Microsoft Graph 将 return JSON 包含文件的数据。
微软 RETURNS 文件本身
因此 fetch
或不需要任何 headers 的非常简单的请求就足以获取文件,然后使用 .blob()
或 responseType: 'blob'
你会从响应中得到一个 blob。
(await fetch([@microsoft.graph.downloadUrl])).blob() // returns Blob promise
上下文:
我正在尝试将文件下载到 AngularJS 应用程序的缓冲区中,以便将文件转发到后端以存储在服务器上(后端不受我的控制)因此我需要将文件数据放入 Blob 然后获取上传了我自己的服务器。
问题:
Microsoft graph 在 JSON 文件中为我提供了他们推荐的 @microsoft.graph.downloadUrl
属性,该文件检索当前所选文件夹中所有文件的列表。当我用它来下载文件本身时,我遇到了 Access to XMLHttpRequest at [the URL from @microsft.graph.downloadUrl] from origin 'http://localhost:8080' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
我的代码:
const req = {
method: "GET",
url: file.item.downloadLink, // @microsoft.graph.downloadUrl
headers: {
Authorization: `Bearer ${this.token}`
},
eventHandlers: getEventUploadEvenHandlers(file), // update download progress bar
responseType: "blob"
};
const ret = await this.$http(req);
我的研究:
我翻阅了 5 年前的这篇文章:https://github.com/microsoftgraph/microsoft-graph-docs/issues/43
我在这里阅读了有关 CORS 和文件的整篇文章:https://docs.microsoft.com/en-us/onedrive/developer/rest-api/concepts/working-with-cors?view=odsp-graph-online
当然,我已经阅读了文档:https://docs.microsoft.com/en-us/graph/api/driveitem-get-content?view=graph-rest-1.0&tabs=http
我没有找到问题为什么会持续存在的答案
如果您对这个问题有任何经验或注意到您认为我遗漏的内容,我将不胜感激。
感谢您的帮助
所以基本上我的整个方法都是错误的。
我从其他云服务中推断出 Microsoft Graph 将 return JSON 包含文件的数据。
微软 RETURNS 文件本身
因此 fetch
或不需要任何 headers 的非常简单的请求就足以获取文件,然后使用 .blob()
或 responseType: 'blob'
你会从响应中得到一个 blob。
(await fetch([@microsoft.graph.downloadUrl])).blob() // returns Blob promise