ajax获取Office365 REST Api请求失败CORS?

时间:2015-02-03 22:13:32

标签: ajax cors office365

我正在尝试从本地服务器向Office365 RESTful API服务发出ajax GET请求,但遇到了跨域HTTPRequest错误。以下是我的'get-files-at-root'尝试的示例:

$.ajax({
  url: 'https://[sharepoint_site]/_api/v1.0/me/files?access_token='+token,
  type: 'get',
  dataType: 'json',
  success: function(data) {
    if (success){
      success(data);
    }
  },
  error: error
})

我从服务器收到以下回复:

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access. The response had HTTP status code 403.

我已尝试将访问令牌作为标头参数发送:

headers: {'Authorization': 'Bearer '+ token}

但结果相同。

关于我做错的任何想法?

(背景:我正在尝试在客户端上创建自己的Office365'文件选择器',因为我找不到提供此功能的OneDrive Business的可用库。)

4 个答案:

答案 0 :(得分:4)

Office 365 Files API和SharePoint REST刚刚引入了对CORS的支持。

https://msdn.microsoft.com/en-us/office/office365/howto/create-web-apps-using-CORS-to-access-files-in-Office-365

你要做的是它的确切运作方式。该服务将使用Access-Control-Allow-Origin标头响应OPTIONS飞行前请求。

请求中的授权必须是Azure Active Directory颁发的OAuth2隐式授权访问令牌。

答案 1 :(得分:0)

    response.setHeader("Access-Control-Allow-Origin", "*");
    response.setCharacterEncoding("UTF-8");
    response.setHeader("Access-Control-Allow-Methods", "POST, GET");
    response.setHeader("Access-Control-Allow-Headers", "x-requested-with");

答案 2 :(得分:0)

你不知道CORS。阅读规范:http://www.w3.org/TR/cors/

在您的情况下,您必须允许null来源,因为我们正在讨论localhost。您必须允许发送的方法和标头,甚至是content-type标头。您必须允许发送凭据,您可以在Authorization标头中获取凭据。您必须使用OPTIONS处理200 ok次请求。

答案 3 :(得分:-2)

您可以尝试在标题中设置Access-Control-Allow-Origin,如下所示。

headers: { 'Access-Control-Allow-Origin': '*' }