2014-09-30 114 views
0

我需要通過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

回答

0

我看不到您的授權標頭。如果這不是作爲請求的一部分發送的,即使您擁有有效的請求摘要標題,您也將始終獲得403狀態碼。