通过REST API发布的Sharepoint 2013:尝试创建项目时出现错误403禁止

我正在尝试使用Sharepoint 2013上的rest api创建一个简单的列表项。
我的代码:

$.ajax({
url:siteUrl+“/\u api/web/lists/getByTitle('internal\u Listname')/items”,
类型:“POST”,
contentType:“application/json;odata=verbose”,
数据:JSON.stringify({
“\u元数据”:{
'type':'SP.Data.internal_ListnameListItem',
},
“K1F1”:K1F1结果,
}),
标题:{
“接受”:“application/json;odata=verbose”,
“X-RequestDigest”:$(“#u-RequestDigest”).val(),
},
成功:功能(数据){
控制台日志(“完成”);
},
错误:函数(err){
log(JSON.stringify(err));
}
});

当尝试发送数据时,我得到403“禁止”错误

“错误”:{
“代码”:“-2130575251,Microsoft.SharePoint.SPException”,
“信息”:{
“郎”:“恩我们”,
“值”:“此页的安全验证无效,可能已损坏。请使用web浏览器的“后退”按钮重试您的操作。”
}
}

  • 我拥有此网站和列表的完全管理员权限

最有可能发生此错误的是,表单摘要在页面上已过期

在这种情况下,您可以通过向/\u api/contextinfo端点发出POST请求来获取新的表单摘要值

示例

函数getFormDigest(webUrl){
返回$.ajax({
url:webUrl+“/_api/contextinfo”,
方法:“张贴”,
标题:{“接受”:“应用程序/json;odata=verbose”}
});
}
函数createListItem(webUrl、listName、itemProperties){
返回getFormDigest(webUrl)。然后返回(函数(数据){
返回$.ajax({
url:webUrl+“/”api/web/lists/getbytitle(“+listName+”)/items“,
类型:“POST”,
processData:false,
contentType:“application/json;odata=verbose”,
数据:JSON.stringify(itemProperties),
标题:{
“接受”:“application/json;odata=verbose”,
“X-RequestDigest”:data.d.GetContextWebInformation.FormDigestValue
}
});
});
}

用法

//创建任务项
var taskProperties={
“_metadata”:{“类型”:“SP.Data.WorkflowTasksItem”},
“标题”:“订单批准”
};
createListItem(_spPageContextInfo.webAbsoluteUrl,“工作流任务”,任务属性)
.完成(功能(数据){
log('任务已成功创建');
})
.失败(功能(错误){
log(JSON.stringify(error));
});

发表评论