Проблема с CORS при вызове ajax в scriptlab
Я тестирую надстройку scriptlab в Excel
Я пытаюсь выполнить вызов покоя к внешней конечной точке, как это
$.ajax({
url: "https://jsonplaceholder.typicode.com/posts/1",
dataType: 'JSON',
headers: {
'Authorization': 'Basic blablabla',
})....
Выше работает нормально. Но в конечной точке, где CORS включен, я вернул xhr.readyState 0 обратно.
Как я могу избежать проблем с CORS? (Я не владелец конечной точки)
2 ответа
Прежде всего, спасибо за попытку Script Lab!
Я бы начал с ответа на следующий вопрос: является ли проблема специфичной для надстроек Office и / или Script Lab. Самый простой способ - это попробовать другую игровую площадку JS, например JSFiddle или CodePen. Можете ли вы сделать звонок работать там? Это изолирует вопрос как о CORS, так и о доменах приложений (о чем говорил Слава). Хоть
С точки зрения общего руководства, я думаю, у вас есть несколько вариантов
- Служба, которую вы вызываете, может разрешать исключения для определенных URL-адресов (т. Е. Она может запрашивать у вас URL-адрес, с которого вы будете звонить, и вносить в белый список этот URL-адрес). Если это так, присвойте ему URL-адрес https://script-lab-runner.azureedge.net/ (сам URL-адрес не разрешается, так как ожидается его POST-редактирование; но ваш скомпилированный исполняемый фрагмент в конечном итоге будет запущен из Это).
- Вы можете создать свой собственный сервер (или, возможно, очень маленькую вычислительную единицу, например, функцию Azure), чтобы выполнять вызов от вашего имени на стороне сервера (где CORS не является проблемой). И вы можете сделать так, чтобы сама функция Azure принимала CORS. Таким образом, вы по существу перенаправляете запрос через свой собственный сервер, где вы можете включить CORS.
Надеюсь это поможет!
Вы должны изменить свой файл манифеста и добавить в AppDomains тег вашего домена, чтобы приложение было доверенным. По умолчанию ваша надстройка может загружать любую страницу, которая находится в том же домене, что и местоположение, указанное в элементе SourceLocation. Чтобы загрузить страницы, которые не находятся в том же домене, что и надстройка, укажите домены с помощью элементов AppDomains и AppDomain.