我正在尝试按照官方文档 ( http://msdn.microsoft.com/en-us/library/dn659743.aspx#create_a_folder ) 使用 OneDrive REST API 创建文件夹。 我已将其实现为 JavaScript 中的 AJAX 请求,这会在浏览器中产生 CORS 请求。
正如预期的那样,浏览器发送第一个带有相关 header 的 OPTIONS 请求:
Access-Control-Request-Headers:authorization, content-type
Access-Control-Request-Method:POST
但是,响应 header 不包含授权 header 作为允许的 header :
Access-Control-Allow-Headers:Content-Type
Access-Control-Allow-Methods:GET, POST, DELETE, PUT, HEAD, MOVE, COPY
Access-Control-Allow-Origin:*
Access-Control-Max-Age:2592000
因此,浏览器(本例中为 Chromium 34)会在控制台中记录错误,并且不会提交 POST 请求,因为不允许添加 Authorization header :
XMLHttpRequest cannot load https://apis.live.net/v5.0/me/skydrive. Request header field authorization is not allowed by Access-Control-Allow-Headers.
有什么办法可以解决这个问题吗?据我了解,这是一个服务器问题,因为文档明确要求提供此 header 。
最佳答案
您应该仍然能够提供 access_token 作为查询参数,如“删除文件夹”示例(并且不要通过授权 header 提供)。
关于javascript - OneDrive REST API - CORS POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24783675/