SharePoint REST API contextinfo的使用

  前言

  最近在请求SharePoint API的时候碰到403错误,很明显没有权限,那么,为什么呢?SharePoint页面中应该有上下文才是。好吧,如果你也遇到这样的问题,就先看看请求一下contextinfo这个方法吧。

  正文

  1.Ajax 请求SharePoint Online API,如下:

jQuery.ajax({
        url: "http://<site url>/_api/web/lists",
        type: "POST",
        data:  JSON.stringify({ '__metadata': { 'type': 'SP.List' }, 'AllowContentTypes': true,
 'BaseTemplate': 100, 'ContentTypesEnabled': true, 'Description': 'My list description', 'Title': 'Test' }
),
        headers: {
            "accept": "application/json;odata=verbose",
            "content-type": "application/json;odata=verbose",
            "content-length": <length of post body>,
            "X-RequestDigest": $("#__REQUESTDIGEST").val()
        },
        success: doSuccess,
        error: doError
});

  2.但是,我们有时候没办法在页面中获取到"X-RequestDigest",那怎么办呢?这时候就需要contextinfo这个方法了:

  参考:Navigate the SharePoint data structure represented in the REST service | Microsoft Docs

POST https://{site_url}/_api/contextinfo
Authorization: "Bearer " + accessToken
Accept: "application/json;odata=verbose"

  3.当然,我们有时候还会在C#中请求,如下图:

HttpWebRequest endpointRequest =(HttpWebRequest)HttpWebRequest.Create("http://<site url>/_api/contextinfo");
endpointRequest.Method = "POST";
endpointRequest.Accept = "application/json;odata=verbose";
HttpWebResponse endpointResponse = (HttpWebResponse)endpointRequest.GetResponse();

  4.这样的方式是调用API常用的方式:

  $.ajax({
        url: siteurl + '/_api/contextinfo',
        method: 'POST',
        headers: { 'Accept': 'application/json; odata=verbose' }
    }).done(function (data) {
        var requestDigest = data.d.GetContextWebInformation.FormDigestValue
        ......//your request
    })

  总结

  除了调用api的时候需要contextinfo这个方法,很多时候在post的时候,也需要先这样获取RequestDigest,通常get方法可以不需要。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

霖雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值