使用REST向SharePoint列表添加和删除项目时出现403个禁止错误和400个错误请求错误

使用REST向SharePoint列表添加和删除项目时出现403个禁止错误和400个错误请求错误,rest,sharepoint,sharepoint-2013,Rest,Sharepoint,Sharepoint 2013,我是SharePoint开发的新手。我正在尝试使用SharePoint online开发简单的SharePoint应用程序。我的网站集中有一个名为“产品”的列表。在我的应用程序中,我编写了以下代码来添加和删除列表中的项目 function addProduct(product) { var executor; executor = new SP.RequestExecutor(appwebUrl); var url = appwebUrl +"/_api/SP.AppContextSit

我是SharePoint开发的新手。我正在尝试使用SharePoint online开发简单的SharePoint应用程序。我的网站集中有一个名为“产品”的列表。在我的应用程序中,我编写了以下代码来添加和删除列表中的项目

 function addProduct(product) {
 var executor;
 executor = new SP.RequestExecutor(appwebUrl);
 var url = appwebUrl +"/_api/SP.AppContextSite(@target)/web/lists/getbytitle('Products')/items/?@target='" + hostwebUrl+"'";
 executor.executeAsync({
    url: url,
    method: "POST",
    body: JSON.stringify({__metadata: { type: 'SP.Data.ProductsListItem' },
        Title: product.ProductName(),
        ProductId: product.ProductId(),
        ProductName: product.ProductName(),
        Price:product.Price()
    }),
    headers: {
        "Accept": "application/json; odata=verbose",
        "content-type": "application/json;odata=verbose",
        },
    success: successProductAddHandler,
    error: errorProductAddHandler
});
}


function successProductAddHandler(data) {alert('added successfully') }
function errorProductAddHandler(data, errorCode, errorMessage) { alert('cannot perform action') }


function deleteProduct(product) {
var executor;
executor = new SP.RequestExecutor(appwebUrl);
var url=appwebUrl+"/_api/SP.AppContextSite(@target)/web/lists/getbytitle('Products')/items('" + product.ID() + "')/?@target='" + hostwebUrl + "'";
executor.executeAsync({
    url: url,
    method: "POST",
    headers: {

        "IF-MATCH": "*",
        "X-HTTP-Method": "DELETE"
    },
    success: successProductAddHandler,
    error: errorProductAddHandler
});`
当我调用
addProduct
时,我收到了
403
错误代码, 和
400
调用
deleteProduct
时的错误代码。 我能够获取列表项并显示

我尝试添加
X-RequestDigest:$(“#uu RequestDigest”).val()
,但没有成功

如果我包括
“Accept”:“application/json;odata=verbose“
deleteProduct()
的请求头中,当我调用
deleteProduct
时,两个请求将发送到服务器

  • /sites/productsdev/productsapp/_-api/contextinfo
    (获取摘要值)
  • /sites/ProductsDev/ProductsApp/_-api/SP.AppContextSite(@target)/web/lists/getbytitle('Products')/items(itemid)/?@target='mysitecolectionurl'
    (使用上述调用
    X-RequestDigest
    返回的摘要值)

  • 无论何时使用REST API在SharePoint 2013中执行任何POST操作,都必须在标题中传递下面的代码段

    “X-RequestDigest”:$(“#u-RequestDigest”).val()

    乙二醇

    标题:{“接受”:“application/json;odata=verbose”, “X-RequestDigest”:$(“#u-RequestDigest”).val()


    无论何时使用REST API在SharePoint 2013中执行任何POST操作,都必须在标题中传递下面的代码段

    “X-RequestDigest”:$(“#u-RequestDigest”).val()

    乙二醇

    标题:{“接受”:“application/json;odata=verbose”, “X-RequestDigest”:$(“#u-RequestDigest”).val()


    哦..找到了解决方案。在AppManifest.xml权限选项卡中,我只授予作用域“web”的读取权限。因此我只能执行get请求,现在我将其更改为“完全控制”,工作正常。谢谢。这是更新的代码吗?这是否可能作为SharePoint Online 2013页面中的嵌入代码块?请检查以下答案:哦..开始t解决方案。在AppManifest.xml权限选项卡中,我只授予作用域“web”的读取权限。因此,我只能执行get请求,现在我将其更改为“完全控制”,工作正常。谢谢。这是更新的代码吗?这是否可能作为SharePoint Online 2013页面中的嵌入代码块?请检查以下答案: