Проблема аутентификации с JQuery и веб-службой SharePoint - PullRequest
3 голосов
/ 03 февраля 2010

Я звоню в веб-службу SharePoint (Webs.asmx) с JQuery, чтобы получить список всех дочерних сайтов:

$(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. У меня есть «Полный контроль» доступ к сайту и всем дочерним сайтам. Вызов другого веб-сервиса (например, вызов GetListCollection из lists.asmx) выполнен успешно.

В чем здесь проблема?

1 Ответ

3 голосов
/ 03 февраля 2010

Для этой операции требуется доступ администратора семейства сайтов, даже полного доступа недостаточно.

Возможно, вам придется вместо этого выполнить итерацию GetWebCollection или создать страницу прокси, которая будет работать с повышенными привилегиями и возвращать ответ веб-службы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...