我创建了一个共享点在线加载项,其中包含要从嵌入式Angular应用程序访问的列表(LearningsList)。
列出列表的内容工作正常,但是当尝试向列表中添加项目时,出现403禁止访问错误。
我尝试连接到contextinfo并检索最新的FormDigestValue(返回正确),但是仍然无法正常工作。
我唯一看到的问题是FormsDigestValue日期/时间始终比本地时间晚一个小时。这可能是问题吗?
我拥有管理员权限,可以手动添加项目。
var restUrl = '/SharePointAddIn3/_api/contextinfo';
let headers2 = new HttpHeaders(
{
'Accept':'application/json;odata=verbose'
}
);
return this.http.post(restUrl,{}, headers2)
.subscribe(
res => {
console.log(res);
console.log("Started onSubmitSP: digest result=" + res.FormDigestValue);
var restUrl = '/SharePointAddIn3/_api/lists/LearningsList/items';
var digest = res.FormDigestValue;
console.log("Started onSubmitSP: digest:" + digest);
return this.http.post(restUrl,
JSON.stringify(
{ '__metadata': { 'type': 'SP.Data.ListFieldsContentType' }, 'Title': 'Test'}
),
{
'X-RequestDigest' : digest,
'accept':"application/json;odata=verbose",
'content-type':"application/json;odata=verbose"
})
.subscribe(
res => {
console.log(res);
console.log("Success!!! added the record:");
this.submitted = true;
},
err => {
console.log("Error occured saving:");
console.log(err);
}
);
},
err => {
console.log("Error occured");
}
)
}
答案 0 :(得分:0)
看来问题出在我提供标题的方式上。它们应该被标记为标题,如下所示:
{
headers {
'X-RequestDigest' : digest,
'accept':"application/json;odata=verbose",
'content-type':"application/json;odata=verbose"
}
}
而不是:
{
'X-RequestDigest' : digest,
'accept':"application/json;odata=verbose",
'content-type':"application/json;odata=verbose"
}