JQuery和SharePoint Web Service的身份验证问题

前端之家收集整理的这篇文章主要介绍了JQuery和SharePoint Web Service的身份验证问题 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在使用JQuery调用SharePoint Web服务(Webs.asmx)以获取所有子站点的列表:

$(document).ready(function() {
        var hrefParts = window.location.href.split('/');
        var wsURL = "";
        for (i = 0; i < (hrefParts.length - 2); i++) {
            if (i > 0)
                wsURL += "/";
            wsURL += hrefParts[i];
        }
        wsURL += "/_vti_bin/Webs.asmx";
        var soapEnv =
            "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'> \
                <soapenv:Body> \
                    <GetAllSubWebCollection xmlns='http://schemas.microsoft.com/sharepoint/soap/'> \
                    </GetAllSubWebCollection > \
                </soapenv:Body> \
            </soapenv:Envelope>";

        $.ajax({
            url: wsURL,beforeSend: function  (xhr) {  
 xhr.setRequestHeader("SOAPAction","http://schemas.microsoft.com/sharepoint/soap/GetAllSubWebCollection");
},type: "POST",dataType: "xml",data: soapEnv,complete: processResult,error:function(xhr,err){ 
    alert("readyState: "+xhr.readyState+"\nstatus: "+xhr.status); 
    alert("responseText: "+xhr.responseText); 
},contentType: "text/xml; charset=\"utf-8\""
        });

    });

    function processResult(xData,status) {
        ...
    }

但是,由于beforeSend调用,我总是遇到登录问题.如果我将其注释掉,则会从SharePoint收到“访问被拒绝”错误页面.
我具有对该站点和所有子站点的“完全控制”访问权限.调用其他Web服务(例如,从list.asmx调用GetListCollection)成功.

这可能是什么问题?

最佳答案
此操作需要网站集管理员访问权限,甚至“完全控制”还不够.

您可能需要改为通过GetWebCollection进行迭代,或创建以提升的特权运行并返回Web服务响应的代理页面.

猜你在找的jQuery相关文章