【问题标题】:403 forbidden and 400 bad request errors while adding and deleting items to SharePoint list using REST使用 REST 在 SharePoint 列表中添加和删除项目时出现 403 禁止和 400 错误请求错误
【发布时间】:2013-06-16 02:36:27
【问题描述】:

我是 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": $("#__REQUESTDIGEST").val(),但没有成功

如果我在deleteProduct() 的请求标头中包含"Accept": "application/json; odata=verbose",并且当我调用deleteProduct 时,两个请求将发送到服务器

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

【问题讨论】:

  • 哦..得到了解决方案。在 AppManifest.xml 权限选项卡中,我只授予范围“网络”的读取权限。所以我只能获取请求,现在我将其更改为“完全控制”,完美运行。谢谢。
  • 那是更新的代码吗?
  • 那么这是否可以作为 SharePoint Online 2013 页面内的嵌入式代码块?

标签: rest sharepoint sharepoint-2013


【解决方案1】:

每当您在 SharePoint 2013 中使用 REST API 执行任何 POST 操作时,您都必须在标头中传递低于 sn-p

"X-RequestDigest": $("#__REQUESTDIGEST").val()

例如

headers: { "Accept": "application/json;odata=verbose", "X-RequestDigest": $("#__REQUESTDIGEST").val() }

【讨论】:

    猜你喜欢
    • 2020-10-15
    • 1970-01-01
    • 2022-01-20
    • 2019-10-05
    • 1970-01-01
    • 2015-12-02
    • 2019-08-07
    • 2023-03-10
    • 2017-07-12
    相关资源
    最近更新 更多