【问题标题】:How to make a rest call to SharePoint 2013 from node.js?如何从 node.js 对 SharePoint 2013 进行休息调用?
【发布时间】:2016-03-11 22:39:28
【问题描述】:

在我的 node.js 应用程序中,我想对 sharepoint 2013 进行休息调用。这是 node.js 代码

function downloadData(res, key, success, fail) {    
    var opts = url.parse(key);


    opts.method = 'GET';
    opts.headers = {"Accept":"application/json;odata=verbose","X-RequestDigest":"0x146E2BDC9A21FDA62E793A0FC9793A530A5C6688BE194FB051703C8529B01A16607931C77D26EE61FA360AD04526F476A052FAC9B3C9277A5463AC20A27C3543,07 Mar 2016 15:37:18 -0000"};
    opts.headers['Content-Type'] = 'application/json;odata=nometadata';

    var req = http.request(opts, function(response) {
        var str = '';

        //another chunk of data has been recieved, so append it to `str`
        response.on('data', function (chunk) {
            str += chunk;
        });

        //the whole response has been recieved, so we just print it out here
        response.on('end', function () {
            success(res, str, key);
        });
    })

    //req.write(data);
    req.end();
}

我从客户端获得了摘要值,我做了一个警报语句,并复制了它。我在一个示例 url 上进行了尝试,如果我粘贴到浏览器上,它确实有效。当我运行它时,我得到401 unauthorized

有谁知道怎么回事?

谢谢

【问题讨论】:

    标签: node.js rest http sharepoint sharepoint-2013


    【解决方案1】:

    首先,X-RequestDigest Header 用于验证客户端请求,但用于身份验证。

    假设您的 SharePoint 网站使用NTLM authentication(默认),您可以使用实现 HTTP NTLM 身份验证流程并允许执行 HTTP 请求的httpntlm package,如下所示:

    var credentials = {
        username: 'jdoe',
        password: 'password',
        domain: 'contoso'
    };
    var webUrl = "http://contoso.intranet.com";
    var fileUrl = "/Shared Documents/guide.docx";
    
    
    httpntlm.get({
        url: webUrl + "/_api/web/getfilebyserverrelativeurl('" + fileUrl + "')/$value",
        username: credentials.username,
        password: credentials.password,
        domain: credentials.domain
    }, function (err, res) {
        if (err) console.log(err);
    
    
        console.log(res.body); //print data
    });
    

    【讨论】:

    • 试过了,但总是得到 HTTP 401 错误,即使“玩”一点凭据(尝试域的所有可能值,如 <tenant><tenant>.sharepoint.com... 和用户名如 @ 987654329@,<username>@<tenant>.onmicrosoft.com...)。终于通过包sp-requestnpmjs.com/package/sp-request和登录/密码的基本身份验证获得了更好的运气(我将尝试其他身份验证方式以避免存储密码的需要)
    猜你喜欢
    • 1970-01-01
    • 2016-11-25
    • 1970-01-01
    • 2016-11-30
    • 1970-01-01
    • 2016-09-08
    • 2019-07-06
    • 1970-01-01
    • 2014-03-09
    相关资源
    最近更新 更多