- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在尝试在客户端 javascript 中处理 onedrive 文件,但首先我需要一种使用 XMLHttpRequest 来下载文件的方法。 onedrive支持cors的很多操作,但是下载文件到javascript有如下问题:
如此处所述:onedrive rest api manual
我可以发送请求到:
获取 https://apis.live.net/v5.0/FILE_ID/content?access_token=ACCESS_TOKEN
它会回复一个位置 header ,将浏览器重定向到文件。问题是当我通过 XHR 发送这些请求时,浏览器总是随请求发送 Origin header 。对于我上面描述的第一个请求,onedrive 还回复了一个 Access-Control-Allow-Origin:* header ,因此该请求在浏览器中被允许。然而,当浏览器被重定向到文件的实际位置时,该资源没有 Access-Control-Allow-Origin header ,因此 XHR 请求被浏览器拒绝(chrome 发送一个 Origin header 设置为 null重定向请求)。
我也试过获取位置但不自动重定向,然后发送另一个 XHR 请求,这会将原始 header 设置为我网站的域,但结果是一样的。
正如我在开头提到的,我需要在 javascript 中处理数据,所以我不是在问如何将 onedrive 文件下载到硬盘。我需要网页中的 javascript 可以访问数据。
我知道我可以使用服务器端编程为我获取文件数据,然后将其发送给客户端,但对于我的应用程序,这不是一个选项(至少这不是我在时刻)。
如果没有办法做到这一点,有没有人知道为什么他们会以这种方式实现他们的 api?允许 javascript 通过 cors 和重定向获取位置,但不包含重定向资源的 cors header 。为什么不首先拒绝 cors 呢?这是错误吗?
最佳答案
据我所知,答案是下载内容不能仅通过浏览器中的 JavaScript 完成。他们为什么这样做?你必须问他们,但我猜要么是一个错误,要么是一些未指明的“安全问题”。就其值(value)而言,他们似乎认为下载内容 符合此处文档中的 CORS:https://dev.onedrive.com/misc/working-with-cors.htm :
To download files from OneDrive in a JavaScript app you cannot use the /content API, since this responds with a 302 redirect. A 302 redirect is explicitly prohibited when a CORS preflight is required, such as when providing the Authorization header.
Instead, your app needs to select the @content.downloadUrl property, which returns the same URL that /content would have redirected to. This URL can then be requested directly using XMLHttpRequest. Because these URLs are pre-authenticated they can be retrieved without a CORS preflight request.
然而,据我所知,他们是错误的。仅仅因为您不需要预检请求并不意味着响应符合 CORS。您仍然需要在响应中使用 Access-Control-Allow-Origin header 。
对于任何想知道的人,这仍然是新图形 API 中的一个问题(据我所知,它本质上是 OneDrive API 的代理 API)。相同的基本问题仍然存在 - 您可以从项目中获取下载 URL,但该 URL 指向不符合 CORS 的资源,因此这对您没有多大好处。
我有一个 Unresolved Microsoft 问题 here关于这个问题。我的问题得到了一些回应(我让他们通过图形 API 公开了下载 URL),但我仍在等待,看看他们是否会想出一个真正的解决方案来从 JavaScript 下载内容。
如果我在那个问题上得到了解决方案或真正的答案,我会尝试在这里报告,以便将来其他人可以有真正的答案供引用。
关于javascript - Onedrive cors 在 javascript 中下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27068647/
我需要使用 power automate + Office 脚本从一个 Excel 工作表复制数据并粘贴(仅值)到另一个工作表 我开始使用下面链接中的答案创建流程。 Power Automate: C
我试图删除这个项目文件夹,但即使在我运行 rm -force 之后它仍然拒绝我.它向我展示了这个: is an NTFS junction point. Use the Force parameter
当我使用“知道此链接的任何人都可以查看此项目”选项在 UI 中创建共享链接时,我得到一个类似于 https://onedrive.live.com/redir?resid=XXX!YYYY&authk
(创建超链接后,我将在 OneNote 中使用它链接到我自己的 Onedrive 上的文件,仅供我使用!) 当我在线查看 Word 中的文件时,显示的 URL 是: https://onedrive.
我想在一个 rest API 调用中获取 office365 onedrive 文件夹中包含的所有文件和文件夹,有没有办法做到这一点? 最佳答案 没有特定的 API 调用来检索 Drive 的平面表示
我正在构建一个 Windows 服务,该服务使用以下方法通过 Graph API 连接到 OneDrive for Business: https://graph.microsoft.io/en-us
请允许我解释什么我在做什么以及如何我在做什么。 我在做什么? 我正在尝试使用其 REST API 将文件上传到 Onedrive来源:one drive api documentation 我正在使用
我正在尝试使用 java sdk 将文件上传到 OneDrive 特殊文件夹,但出现以下错误 错误代码:BadRequest 错误消息:使用“microsoft.graph.createUploadS
我正在尝试使用 OneDrive iOS SDK 将 OneDrive 集成到我的应用程序中。我设法做了我想做的大部分事情,但我似乎无法弄清楚如何在 OneDrive 上的文件夹(项目)中上传图像。上
Microsoft Graph 可以提供 List items shared with the signed-in user 。我想将此 REST 功能与 OneDrive file picker f
我正在尝试通过以下 URL 获取 OneDrive 访问 token https://login.live.com/oauth20_token.srf?client_id=YOUR_CLIENT_ID
我是 skydrive 的新生。然后我想在html中使用文件选择器,并从Interactive Live SDK复制演示代码。但运行结果,打开的窗口并没有直接到文件选择器页面,只是直接到我设置的red
如果我想在保存后使用打开的 Workbook 对象获取 Excel 文件的全名,但该文件已同步到 OneDrive,我会得到一个“https”地址,而不是其他程序无法解释的本地地址。 如何获取这样的文
我刚刚开始使用 OneDrive API。我有一个与 Google Drive 和 Dropbox 集成并从这些服务接收推送通知的应用程序,我希望包含 OneDrive 支持。 也许我没有在看 rig
尝试以不那么困惑的方式存储用户设置和默认保存的数据位置。 在 PC1 上, Label1.Caption := TPath.GetDocumentsPath; 向我显示 C:\Users\Mike\D
我想检查用户是否已经登录到 OneDrive,如果没有,则允许他们登录。我首先在 JS/HTML 项目中尝试过此操作。然后使用 C#/XAML 项目。 我查看了 C#/XAML OneDrive 代码
所以我制作了一个 OneDrive uploader ,它使用 Azure,目前它不适用于教育或工作场所帐户。它仅适用于普通的 Microsoft 帐户。如何让我的应用程序与其他类型的 Microso
我是 Azure 开发的新手。所以我尝试从微软文档( https://learn.microsoft.com/en-us/learn/modules/msgraph-access-file-data/
我正在尝试使用以下网址提取根文件夹中的所有文件: https://api.onedrive.com/v1.0/drive/root/children 但这也给了我同一文件夹下的所有文件夹。有没有办法只
我在引用中没有找到在 WP8.1 上使用 OneDrive SDK 创建新 OneDrive 文件夹的方法。我正在寻找一种跨设备和平台备份和同步的方法。 最佳答案 您可以使用 REST 在 OneDr
我是一名优秀的程序员,十分优秀!