Из-за ограничений междоменной безопасности вы не можете вызывать API REST SharePoint непосредственно извне SharePoint.
Альтернативой является использование iframe для отображения страницы SharePoint, установка вашего JavaScript, который должен напрямую связываться с REST API на странице SharePoint, и использовать postMessage для связи между вашей внешней страницей и встроенной страницей в iframe ,
Несколько предостережений:
- Оба внедренные страницы в IFRAME и странице хостинга должны использовать тот же протокол, либо HTTP или HTTPS.
- Необходимо установить страницу SharePoint (или среду SharePoint), чтобы разрешить размещение ее содержимого в кадре.
Если у вас есть SharePoint Designer или какой-либо другой инструмент для редактирования страниц ASPX, вы можете добавить элемент управления на страницу, которая позволяет встраивать страницу в iframe.
<% Register Tagprefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<WebPartPages:AllowFraming runat="server"/>
JavaScript работает на странице, которая вложена в IFRAME может вызвать parent.postMessage(data,url)
для отправки данных на странице размещения. (Второй параметр должен соответствовать исходной позиции хостинга для обеспечения безопасности.)
Чтобы прослушивать и отвечать на получение данных на главной странице, добавьте прослушиватель событий для запуска по событию «сообщение».
if(window.addEventListener){
window.addEventListener("message", onMessageReceived);
}else{
window.attachEvent("onmessage", onMessageReceived);
}
Вы можете отправить дополнительные подробности на странице внедренной в IFRAME с использованием параметров строки запроса (для начальной конфигурации) или дополнительных PostMessage вызовов (для двухсторонней связи).
Отправка сообщения на встроенном окно в IFRAME со страницы хостинга похож на отправку сообщения в другом направлении: разница в том, что вам нужно, чтобы получить ссылку на contentWindow
имущество Iframe и позвонить postMessage
на него.