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) { 
    } 
}); 
+0

这是否与sharepoint在同一台服务器上运行?如果不是,它被认为是跨域的,你需要确保它是相应的设置。有时候就像添加'callback =?'一样简单到URL中。 – 2014-09-30 21:27:02

+0

此功能将由拥有适当权限的用户通过Sharepoint页面触发。这是否需要跨域呼叫?我之前从未使用过跨域调用,但是之前我只用REST读过,从未写过 – cm2 2014-10-02 16:58:13

+0

根据您的评论,它不应该跨域。你的代码看起来对我来说是正确的,所以我不确定发生了什么。这是几乎一字不差的我用过的没有问题。 – 2014-10-02 18:01:11

我看不到您的授权标头。如果这不是作为请求的一部分发送的,即使您拥有有效的请求摘要标题,您也将始终获得403状态码。