Sharepoint REST API调用状态403 FORBIDDEN
问题描述:
我需要通过REST Api更新或在Sharepoint列表中创建新对象。我创建新项目或编辑现有项目的REST呼叫正在返回状态403:FORBIDDEN并且我不明白为什么。用户具有编辑和读取列表所需的全部访问权限。我如何继续并获得这些REST呼叫?Sharepoint REST API调用状态403 FORBIDDEN
//update current item
$.ajax({
url: "/sitename/_api/web/Lists/getbytitle('metricList')/items(" + results[i].Id + ")",
type: "POST",
data: JSON.stringify({
'__metadata': {
'type': 'SP.Data.iconMetricsListItem'
},
'numClicks': temp
}),
headers: {
"IF-MATCH": "*",
"X-HTTP-Method":"MERGE",
"accept": "application/json;odata=verbose",
"content-type": "application/json;odata=verbose",
"X-RequestDigest": $("#__REQUESTDIGEST").val()
}
});
//create new item
$.ajax({
url:"/sitename/_api/web/Lists/getbytitle('metricList')/items",
type: "POST",
contentType: "application/json;odata=verbose",
data: JSON.stringify(item),
headers: {
"Accept": "application/json;odata=verbose",
"X-RequestDigest": $("#__REQUESTDIGEST").val()
},
success: function (data) {
},
error: function (data) {
}
});
答
我看不到您的授权标头。如果这不是作为请求的一部分发送的,即使您拥有有效的请求摘要标题,您也将始终获得403状态码。
这是否与sharepoint在同一台服务器上运行?如果不是,它被认为是跨域的,你需要确保它是相应的设置。有时候就像添加'callback =?'一样简单到URL中。 – 2014-09-30 21:27:02
此功能将由拥有适当权限的用户通过Sharepoint页面触发。这是否需要跨域呼叫?我之前从未使用过跨域调用,但是之前我只用REST读过,从未写过 – cm2 2014-10-02 16:58:13
根据您的评论,它不应该跨域。你的代码看起来对我来说是正确的,所以我不确定发生了什么。这是几乎一字不差的我用过的没有问题。 – 2014-10-02 18:01:11