Как я могу сделать междоменный вызов API в надстройке Excel в JavaScript? - PullRequest
0 голосов
/ 25 октября 2019

Я разрабатываю надстройку для Excel с использованием JavaScript.
Эта надстройка должна выполнять запросы к API (запросы POST и GET). Я использую AJAX для выполнения этих запросов, но единственный ответ, который я получаю, - это следующая ошибка:

{"readyState":0,"status":0,"statusText":"error"}.

Я знаю, что проблема не имеет ничего общего с внутренностями запросов, так как запросы работают нормальнокогда я использую Postman для их проверки.

Я подозреваю, что проблема связана с междоменным запросом POST. Самая очевидная причина, с которой я столкнулся, касается связи между различными зонами безопасности. Однако обеспечение безопасности API-сервера не изменило ничего, поэтому это не может быть причиной моей проблемы. Следующие заголовки также были добавлены к каждому ответу API, но это также ничего не изменило:

  • Access-Control-Allow-Origin: *
  • Access-Control-Allow-Методы: GET, POST, OPTIONS
  • Access-Control-Allow-Headers: *
  • Access-Control-Max-Age: 86400

Я думаю, что могуупустить что-то, связанное с надстройками Office или даже надстройками Excel, в частности, что мешает мне отправлять эти запросы, но я не могу найти больше информации о том, что это может быть. Если кто-нибудь может помочь мне решить эту проблему или знает, в чем может быть причина, пожалуйста, свяжитесь с нами.

Ниже приведен код запроса POST к API, на данный момент я жестко закодировал аргументы, чтобыоблегчить тестирование запроса:

function sendPostRequest(url, headers, data, callback) {
    $.ajax({
        url: /*the url to the API server*/,
        type: 'post',
        headers: {
            'Authorization': /* the necessary key */,
            'Content-Type': 'application/json'
        },
        dataType: 'json',
        crossDomain: true,
        data: /* the necessary data */
    }).then(
        function success(res, textStatus, xhr) {
            if (xhr.status >= 200 && xhr.status < 300) {
                callback(null, res)
            } else {
                callback({ statusCode: xhr.status, statusMessage: textStatus, data: res }, null)
            }
        },
        function fail(data, textStatus) {
            callback(data, null)
        }
    );
}

Вызвана функция обратного вызова fail с указанной выше ошибкой.

({"readyState":0,"status":0,"statusText":"error"})

Функция обратного вызова выглядит следующим образом:

function (err, data) {
    if (err) {
        /* a function displaying JSON.stringify(err) to the user */
    } else {
        /* a function displaying a success message to the user */
    }
}

Заранее спасибо!

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