У меня есть целевая страница, сидящая на семействе сайтов (Страницы). Я хочу перенести этот список данных с отдельного сайта (текущие задачи). Однако, когда я делаю вызов, я получаю следующую ошибку:
-2130575251, Microsoft.SharePoint.SPException
The security validation for this page is invalid and might be corrupted. Please use your web browser's Back button to try your operation again.
Для этого я сначала получаю представление:
function (webUrl, listTitle, viewTitle, list, forCount) {
var parentObject = this;
var method = 'GET';
var requestDigest = document.getElementById('__REQUESTDIGEST').value;
var url = webUrl + "/_api/web/lists/getByTitle('" + listTitle + "')/Views/getbytitle('" + viewTitle + "')/ViewQuery";
var req = new XMLHttpRequest();
req.open(method, url);
// req.setRequestHeader('X-RequestDigest', requestDigest);
req.setRequestHeader("Accept", "application/json;odata=verbose");
req.onload = function () {
if (req.status == 200) {
console.log('SUCCESS', 'fetchView - req.response', req.response);
var viewQuery = JSON.parse(req.response);
viewQuery = viewQuery.d.ViewQuery;
console.log('DEBUG', 'fetchView - viewQuery', viewQuery);
parentObject.fetchList(webUrl, listTitle, viewQuery, list, forCount)
} else {
console.error(req);
}
};
req.onerror = function () {
console.error(req);
};
req.send();
}
Изатем выберите список
function (webUrl, listTitle, queryText, list, forCount, formDigestValue) {
var requestDigest = document.getElementById('__REQUESTDIGEST').value;
var parentObject = this;
var viewXml = '<View><Query>' + queryText + '</Query></View>';
var url = webUrl + "/_api/web/lists/getbytitle('" + listTitle + "')/getitems?"
+ "$select=FieldValuesAsText/ID,FieldValuesAsText/Title,FieldValuesAsText/FF_FlowName,FieldValuesAsText/FF_Status,FieldValuesAsText/FF_SubmitDate,FieldValuesAsText/FF_AssignTo"
+ "&$expand=FieldValuesAsText"
+ "&@target='" + this.returnUrl + "'";
var queryPayload = {
query: {
'__metadata': { 'type': 'SP.CamlQuery' },
'ViewXml': viewXml
}
};
var method = 'POST';
var requestDigest = document.getElementById('__REQUESTDIGEST').value;
var req = new XMLHttpRequest();
req.open(method, url);
req.setRequestHeader('X-RequestDigest', requestDigest);
req.setRequestHeader("Accept", "application/json;odata=verbose");
req.setRequestHeader("Content-Type", "application/json;odata=verbose");
req.onload = function () {
if (req.status == 200) {
console.log('DEBUG', 'fetchList - req.response', req.response);
var returnedData = JSON.parse(req.response);
console.log('DEBUG', 'fetchList - returnedData', returnedData.d.results);
// Update Count
if (forCount) {
document.getElementById(list.CountID).innerText = returnedData.d.results.length;
} else {
document.getElementById(list.CountID).innerText = returnedData.d.results.length;
// And Draw Table
parentObject.drawTable(returnedData.d.results, list);
}
} else {
console.error(req);
}
};
// Handle network errors
req.onerror = function () {
console.error(req);
};
req.send(JSON.stringify(queryPayload));
}
Когда страница размещена в том же семействе сайтов, это работает хорошо. Другие вещи, которые я пробовал, - это создание вспомогательной функции, которая извлекает новое значение дайджеста формы с целевого сайта, но тоже не помогает.
Проверка разрешений Я могу подтвердить, что должен использовать «Использовать удаленные интерфейсы ...», но сейчас у меня нет идей.