我正在尝试从本地服务器向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的可用库。)
答案 0 :(得分:4)
Office 365 Files API和SharePoint REST刚刚引入了对CORS的支持。
你要做的是它的确切运作方式。该服务将使用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': '*' }