Ошибка Autodesk Forge при попытке доступа к API онлайн

#c# #jquery #xmlhttprequest #autodesk-forge

Вопрос:

У меня возникла проблема с загрузкой 3D — модели на онлайн-сервер, показанная ошибка связана с доступом к API Forge, локально работает гладко, однако при установке на сервере или на веб-сайте отмечается следующая ошибка «Не удалось загрузить ресурс: сервер ответил со статусом 404 (не найден)», затем «onDocumentLoadFailure () — Код ошибки:7». Как я уже говорил, что я нахожу странным, так это то, что локально это работает. Прикрепил сегмент кода, в котором отображается ошибка.

  function getAccessToken() {
    var xmlHttp = null;
    xmlHttp = new XMLHttpRequest();
    xmlHttp.open("GET", '/api/forge/toke', false); //Address not found
    xmlHttp.send(null);
    return xmlHttp.responseText;
}
 

Заранее большое вам спасибо.

Ответ №1:

Вы уверены, что код, который вы запускаете локально, и код, который вы развернули, действительно совпадают?

Эта getAccessToken функция кажется неправильной по нескольким причинам:

  • Во — первых, кажется, в URL-адресе есть опечатка-не должно ли это быть /api/forge/token вместо /api/forge/toke ?
  • Что еще более важно, HTTP-запрос является асинхронным, что означает, что он не может вернуть ответ сразу после вызова xmlHttp.send() . Вы можете найти более подробную информацию об использовании XMLHttpRequest в https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest.
  • И, наконец, предполагая, что функция передается в Autodesk.Viewing.Initializer параметры, она должна возвращать токен, используя переданный ей параметр обратного вызова (как показано на https://forge.autodesk.com/en/docs/viewer/v7/developers_guide/viewer_basics/initialization/#example).

С учетом этого ваш getAccessToken , вероятно, должен выглядеть примерно так (используя более современный fetch и асинхронный/ожидающий):

 async function getAccessToken(callback) {
  const resp = await fetch('/api/forge/token');
  const json = await resp.json();
  callback(json.access_token, json.expires_in);
}
 

Комментарии:

1. Здравствуйте, большое вам спасибо, что нашли время ответить на мой вопрос. Я уже нашел проблему. Когда я выполняю развертывание, я должен изменить URL-адрес, по которому делается запрос для общественности, или имя домена. Например: mywebsite.com/api/forge/token . В вопросе я допустил ошибку, когда писал, вот почему там написано «токен» вместо «токен».

Ответ №2:

Я уже нашел проблему. Когда я выполняю развертывание, я должен изменить URL-адрес, по которому делается запрос для общественности, или имя домена. Например: mywebsite.com/aplication-name/api/forge/token.